python super
生活随笔
收集整理的這篇文章主要介紹了
python super
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
super用法
先知道干啥用的,那么就需要看下類的繼承,繼承有兩種方式
繼承1
class P:def m(self):print("P class")class C(P):def m(self):print("C class")# 這里是需要調(diào)用父類的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的好處就是更改父類時(shí)不用再改這里,直接改上面就行if __name__ == "__main__":c = C()c.m()繼承構(gòu)造方法1
為什么要單獨(dú)說(shuō)構(gòu)造方法,因?yàn)槿绻焕^承類方法那么就是上例,但是要更改子類的構(gòu)造方法就需要繼承父類的構(gòu)造方法
class P:def __init__(self):print("P class __init__")# def __init__(self, name):# self.name = name 這里記錄下:python沒(méi)有重載,重載的目的是 1.參數(shù)類型 2.參數(shù)個(gè)數(shù),python都不需要 class C(P):def __init__(self):super().__init__() # 如果子類有構(gòu)造方法,必須繼承父類的構(gòu)造方法print("C class __init__")if __name__ == "__main__":c = C()繼承構(gòu)造方法2
構(gòu)造方法中有參數(shù)傳遞
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) # 如果子類有構(gòu)造方法,必須繼承父類的構(gòu)造方法print("C class __init__")class C2(P):def __init__(self):self.name = "YaoMing"super().__init__(self.name) # 如果子類有構(gòu)造方法,必須繼承父類的構(gòu)造方法print("C class __init__")if __name__ == "__main__":# 第一種調(diào)用方式c1 = C1("YaoMing")# 第二種調(diào)用方式c2 = C2()繼承構(gòu)造方法3
子類調(diào)用父類構(gòu)造方法中的參數(shù)
class P:def __init__(self):self.name = "YaoMing"print(f"P class __init__ {self.name}")class C(P):def __init__(self):super().__init__() # 如果子類有構(gòu)造方法,必須繼承父類的構(gòu)造方法print("C class __init__")print(f"In C class parent class param: {self.name}")if __name__ == "__main__":c = C()print(c.name)總結(jié)
總結(jié)
以上是生活随笔為你收集整理的python super的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【山狗】
- 下一篇: excel 打开csv中文乱码