Day26
類的專有方法:
??? __init__ 構(gòu)造函數(shù),在生成對象時(shí)調(diào)用
??? __del__ 析構(gòu)函數(shù),釋放對象時(shí)使用
??? __repr__ 打印,轉(zhuǎn)換
??? __setitem__按照索引賦值
??? __getitem__按照索引獲取值
??? __len__獲得長度
??? __cmp__比較運(yùn)算
??? __call__函數(shù)調(diào)用
??? __add__加運(yùn)算
??? __sub__減運(yùn)算
??? __mul__乘運(yùn)算
??? __div__除運(yùn)算
??? __mod__求余運(yùn)算
??? __pow__稱方
?
?
class BaseClass: def __init__(self): self.name = 'BaseClass' print('BaseCalss: Constructor called') def getname(self): print('BaseCalss: self name equals ' + self.name) ? class DerivedClass(BaseClass): def __init__(self): super().__init__() print('DerivedClass: Constructor called') ? if __name__ == '__main__': class1 = BaseClass() class1.getname() class2 = DerivedClass() class2.getname()運(yùn)行結(jié)果:
BaseCalss: Constructor called BaseCalss: self name equals BaseClass BaseCalss: Constructor called DerivedClass: Constructor called BaseCalss: self name equals BaseClass?
子類也可以overwrite父類的方法,那么父類的方法就不會被調(diào)用,除非手動(dòng)調(diào)用:
class BaseClass: def __init__(self): self.name = 'BaseClass' print('BaseCalss: Constructor called') def getname(self): print('BaseCalss: self name equals ' + self.name) ? class DerivedClass(BaseClass): def __init__(self): super().__init__() print('DerivedClass: Constructor called') def getname(self): print('self.name init value is ' + self.name) self.name = 'DerivedClass' print('DerivedClass: self name equals ' + self.name) ? if __name__ == '__main__': class1 = BaseClass() class1.getname() class2 = DerivedClass() class2.getname()?
運(yùn)行結(jié)果:
BaseCalss: Constructor called?
BaseCalss: self name equals BaseClass?
BaseCalss: Constructor called?
DerivedClass: Constructor called?
self.name init value is BaseClass?
DerivedClass: self name equals DerivedClass
?
python不僅僅支持單繼承,還支持多繼承
? class BaseClass1:
def __init__(self): self.name1 = 'BaseClass1_Name1' self.name = 'BaseClass1_Name' print('BaseCalss1: Constructor called') def getname1(self): print('BaseCalss1: self name1 equals ' + self.name1) def getname(self): print('BaseCalss1: getname called, name equal ' + self.name) ? class BaseClass2: def __init__(self): self.name2 = 'BaseClass2_Name2' self.name = 'BaseClass2_Name' print('BaseClass2: Constructor called') def getname2(self): print('BaseClass2: self name2 equals ' + self.name2) def getname(self): print('BaseCalss2: getname called, name equal ' + self.name) ? class DerivedClass2(BaseClass1, BaseClass2): def __init__(self): BaseClass1.__init__(self) BaseClass2.__init__(self) print('DerivedClass: Constructor called') if __name__ == '__main__': class1 = BaseClass1() class1.getname1() class2 = BaseClass2() class2.getname2() class3 = DerivedClass2() class3.getname1() class3.getname2() class3.getname()運(yùn)行結(jié)果:
BaseCalss1: Constructor called?
BaseCalss1: self name1 equals BaseClass1_Name1?
BaseClass2: Constructor called?
BaseClass2: self name2 equals BaseClass2_Name2?
BaseCalss1: Constructor called?
BaseClass2: Constructor called?
DerivedClass: Constructor called?
BaseCalss1: self name1 equals BaseClass1_Name1?
BaseClass2: self name2 equals BaseClass2_Name2?
BaseCalss1: getname called, name equal BaseClass2_Name
?
轉(zhuǎn)載于:https://www.cnblogs.com/jnbb/p/8316273.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
- 上一篇: oracle过滤某个字段重复记录,只获取
- 下一篇: python 让异常名称显示出来