python過載父類的__init__方法

週週週週和發表於2017-03-31

寫程式碼的時候忽然要實現繼承父類所有的方法並且修改父類的__init__引數,這樣就叫方法過載(如果說的有錯誤歡迎留言指出修改)。

方法過載(overloading method):子類修改父類的一些引數就叫過載吧?個人理解是這樣的。
方法重寫(overiding method):子類不想原封不動的繼承父類的方法,需要進行覆蓋。

#方法過載
class A(object):
    def __init__(slef,name=None,models=None):
        slef.name = name
        slef.models = models or "default"

    def function(slef):
        print(slef.name)
        print(slef.models )

class B(A):
    def __init__(slef):
        #A.__init__(slef)
        super(B,slef).__init__()
        slef.models = "modify"

if __name__ == "__main__":
    a = A()
    a = a.function()

    b = B()
    b.function()

執行結果

None
default
None
modify


#方法重寫
class A(object):
    def __init__(slef,name=None,models=None):
        slef.name = name
        slef.models = models or "default"

    def function(slef):
        print(slef.name)    
        print(slef.models ) 

class B(A):
    def __init__(slef,name=None,models=None):
        slef.name = "B"
        slef.models = "modify"

if __name__ == "__main__":
    a = A()
    a = a.function()

    b = B()
    b.function()          

執行結果

None
default
B
modify

相關文章