# 支援多繼承的物件導向程式設計都可能會導致鑽石繼承(菱形繼承)問題,看以下**:
class a():
def __init__(self):
print("進入a…")
print("離開a…")
class b(a):
def __init__(self):
print("進入b…")
a.__init__(self)
print("離開b…")
class c(a):
def __init__(self):
print("進入c…")
a.__init__(self)
print("離開c…")
class d(b, c):
def __init__(self):
print("進入d…")
b.__init__(self)
c.__init__(self)
print("離開d…")
結果顯示為:
>>>d = d()
進入d…
進入b…
進入a…
離開a…
離開b…
進入c…
進入a…
離開a…
離開c…
離開d…
a進了兩次,現做優化:
#此時召喚super大神!!!
class a():
def __init__(self):
print("進入a…")
print("離開a…")
class b(a):
def __init__(self):
print("進入b…")
super().__init__()
print("離開b…")
class c(a):
def __init__(self):
print("進入c…")
super().__init__()
print("離開c…")
class d(b, c):
def __init__(self):
print("進入d…")
super().__init__()
print("離開d…")
結果顯示為:
>>>d = d()
進入d…
進入b…
進入c…
進入a…
離開a…
離開c…
離開b…
離開d…
python的多重繼承
在設計類的繼承關係時,通常,主線都是單一繼承下來的,如果需要 混入 額外的功能,通過多重繼承就可以實現,這種設計通常稱之為mixin。class animal object pass class mammal animal pass class runnable object def run sel...
python的多重繼承
python和c 一樣,支援多繼承。概念雖然容易,但是困難的工作是如果子類呼叫乙個自身沒有定義的屬性,它是按照何種順序去到父類尋找呢,尤其是眾多父類中有多個都包含該同名屬性。對經典類和新式類來說,屬性的查詢順序是不同的。現在我們分別看一下經典類和新式類兩種不同的表現 經典類 usr bin pyth...
python 多重繼承
python和c 一樣,支援多繼承。概念雖然容易,但是困難的工作是如果子類呼叫乙個自身沒有定義的屬性,它是按照何種順序去到父類尋找呢,尤其是眾多父類中有多個都包含該同名屬性。對經典類和新式類來說,屬性的查詢順序是不同的。現在我們分別看一下經典類和新式類兩種不同的表現 經典類 usr bin pyth...