1. 程式人生 > >少說話多寫程式碼之Python學習044——類06(多繼承)

少說話多寫程式碼之Python學習044——類06(多繼承)

關於繼承最麻煩的就是多繼承,而Python是支援多繼承的。也就是說一個子類可能有兩個以上的父類。
比如,如下程式碼,子類繼承了兩個類,父類的方法在子類中都可以呼叫。

class Programer:
    language='二進位制'
    def work(self):
        print('程式設計師用%s 寫程式碼' %(self.language))
    def workDate(self):
        print('程式設計師上班時間:二十四小時')
class Person:
    food='泡麵'
    def eat(self):
        print('吃 %s' %(self.food))
    def workDate(self):
        print('普通人上班時間:八小時')

class CsharpProgramer(Programer,Person):
    pass #記住前面學的了嗎,這句什麼也不做

CsharpProgramer繼承了Programer和Person類,呼叫如下,

p=CsharpProgramer()
p.language='C#'
p.food='夜宵'
p.work()
p.eat()
p.workDate()

輸出

程式設計師用C# 寫程式碼
吃 夜宵
程式設計師上班時間:二十四小時

如果被繼承的兩個父類有一個重名且引數都一樣的方法,還涉及一個順序的問題,也就是在實現繼承的時候哪個父類在前,前面的類的方法重寫後面類的相同方法。比如,

class Worker(Person,Programer):
    pass #記住前面學的了嗎,這句什麼也不做

p2=Worker()
p2.workDate()

輸出

普通人上班時間:八小時

因為Person在前。workDate方法呼叫的是Person類的。

雖然Python中支援多繼承,在在實際使用中,一個類最好不要多繼承,遵循單繼承的原則會避免很多麻煩和無法預知的bug。

工程檔案下載:https://download.csdn.net/download/yysyangyangyangshan/10791129