python super
生活随笔
收集整理的這篇文章主要介紹了
python super
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
super用法
先知道干啥用的,那么就需要看下類的繼承,繼承有兩種方式
繼承1
class P:def m(self):print("P class")class C(P):def m(self):print("C class")# 這里是需要調用父類的m方法P.m(self)if __name__ == "__main__":c = C()c.m()繼承2
class P:def m(self):print("P class")class C(P):def m(self):print("C class")super().m() # 這里用super的好處就是更改父類時不用再改這里,直接改上面就行if __name__ == "__main__":c = C()c.m()繼承構造方法1
為什么要單獨說構造方法,因為如果只繼承類方法那么就是上例,但是要更改子類的構造方法就需要繼承父類的構造方法
class P:def __init__(self):print("P class __init__")# def __init__(self, name):# self.name = name 這里記錄下:python沒有重載,重載的目的是 1.參數類型 2.參數個數,python都不需要 class C(P):def __init__(self):super().__init__() # 如果子類有構造方法,必須繼承父類的構造方法print("C class __init__")if __name__ == "__main__":c = C()繼承構造方法2
構造方法中有參數傳遞
class P:def __init__(self, name):self.name = nameprint(f"P class __init__ {self.name}")class C1(P):def __init__(self, name):super().__init__(name) # 如果子類有構造方法,必須繼承父類的構造方法print("C class __init__")class C2(P):def __init__(self):self.name = "YaoMing"super().__init__(self.name) # 如果子類有構造方法,必須繼承父類的構造方法print("C class __init__")if __name__ == "__main__":# 第一種調用方式c1 = C1("YaoMing")# 第二種調用方式c2 = C2()繼承構造方法3
子類調用父類構造方法中的參數
class P:def __init__(self):self.name = "YaoMing"print(f"P class __init__ {self.name}")class C(P):def __init__(self):super().__init__() # 如果子類有構造方法,必須繼承父類的構造方法print("C class __init__")print(f"In C class parent class param: {self.name}")if __name__ == "__main__":c = C()print(c.name)總結
總結
以上是生活随笔為你收集整理的python super的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【山狗】
- 下一篇: python安装vpython_VPyt