close
import os import sys import copy from functools import reduce ''' 淺談 Python - super() super() 其實是用來調用父類的一個方法, 也是用來解決多重繼承問題的方式,直接用類的名稱調用父類方法,在使用單繼承的時候沒有問題, 但是如果用再多繼承,則會涉及到查找順序( MRO ),重複之類的問題。 ※ 所謂的 MRO 就是 類的方法解析的順序表,其實就是既成父類方法時的順序表 而以下是super()方法 : super(type,[,object-or-type]) ''' class FooParent(object): def __init__(self): self.parent='I\'m the parent.' print('Parent') def bar(self,message): print("%s from parent "% message) class FooChild(FooParent): def __init__(self): # #super (FooChild,self) 首先! 會先找到 FooChild的 parent ( 就是 FooParent ), #然後再把FooChild的object轉換為 FooParent 的object super(FooChild,self).__init__() print('Child') def bar(self,message): super(FooChild, self).bar(message) print('Child bar function') print(self.parent) def main(): fooChild = FooChild() fooChild.bar('Hello') ## Hello from Parent ''' Parent Child Hello from Parent Child bar fuction I'm the parent. ''' if (__name__=='__main__'): main()
import os import sys import copy from functools import reduce class A(): def __init__(self): self.AMoney = 10000 def get_info(self): print("A()") class B(A): def __init__(self): self.BMonry = 8000 super().__init__() def get_info2(self): print("B()") class C(B): def __init__(self): self.CMonry = 3000 super().__init__() def get_info(self): print("C()") def get_Money(self): print("A money : " , self.AMoney , "B money : " , self.BMonry , "C monry : " , self.CMonry ) def main(): item = C() item.get_Money() if (__name__=='__main__'): main()
全站熱搜
留言列表