您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python重寫父類的方法有哪些的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Python重寫父類的方法有哪些文章都會有所收獲,下面我們一起來看看吧。
class Animal(object): def eat(self): print("動物吃東西") class Cat(Animal): def eat(self): print("貓吃魚") # 格式一:父類名.方法名(對象) Animal.eat(self) # 格式二:super(本類名,對象).方法名() super(Cat, self).eat() # 格式三:super()方法名() super().eat() cat1 = Cat() cat1.eat() print(cat1)
#用元類實現單例模式 class SingletonType(type): instance = {} def __call__(cls, *args, **kwargs): if cls not in cls.instance: # 方式一: # cls.instance[cls] = type.__call__(cls, *args, **kwargs) # 方式二 # cls.instance[cls] = super(SingletonType, cls).__call__(*args, **kwargs) # 方式三 cls.instance[cls] = super().__call__(*args, **kwargs) return cls.instance[cls] class Singleton(metaclass=SingletonType): def __init__(self, name): self.name = name s1 = Singleton('1') s2 = Singleton('2') print(id(s1) == id(s2))
1.當一個類存在多繼承時,它繼承的多個父類有相同的父類A,在重寫其父類時需要注意
方法一:父類名.方法名(對象)
父類A會被調用多次(根據繼承的個數)
重寫父類時根據需要傳遞所需要的參數
方法二:super(本類名,對象).方法名()
父類A也只會被調用一次
重寫父類方法必須傳遞所有參數
2.當一個類存在繼承,且已經在子類中重寫相應的變量,改變父類的變量不會對子類有影響
class Parent(object): x = 1 class Child1(Parent): pass class Child2(Parent): pass print(Parent.x, Child1.x, Child2.x) Child1.x = 2 print(Parent.x, Child1.x, Child2.x) Parent.x = 3 print(Parent.x, Child1.x, Child2.x)
輸出結果
1 1 1
1 2 1
3 2 3
關于“Python重寫父類的方法有哪些”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Python重寫父類的方法有哪些”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。