classAnimal:
def__init__(self):
"""子類初始化的時(shí)候默認(rèn)調(diào)用小腊?"""
self.name ="shit"
self.age ="123"
self.__private_num =12121;
defeat(self):
print("吃")
defpoo(self):
print("拉屎")
def__privateFunc(self):
"""私有方法不會(huì)被子類繼承"""
print("animal's private function")
classDog(Animal):
"""繼承功能"""
def__init__(self):
"""看來這個(gè)跟java類似,如果不顯式調(diào)用父類構(gòu)造久窟,那么則不會(huì)走父類構(gòu)造"""
self.sex ="田園公狗"
defbark(self):
#私有變量只能自己調(diào)用秩冈,不能以任何形式的外部對(duì)象調(diào)用
# print(super().__private_num)
print("瞎JB叫")
classGodDog(Dog):
defbark(self):
"""重寫父類的方法"""
print("神狗說人話")
"""調(diào)用父類的方法,兩種方式"""
# Dog.bark(self)
super().bark()
classCat(Animal):
"""繼承功能"""
defcatch(self):
print("捉老鼠")
# dog = Dog()
# dog.eat()
# cat = Cat()
# cat.poo()
godDog = GodDog()
godDog.bark()
print(godDog.name)
print(godDog.sex)
#==========================================================================================
classHuman:
defeat(self):
print("eat shit")
classFather(Human):
defteach(self):
print("用 拳頭 教育")
deftest1(self):
print("test1")
classMother(Human):
defteach(self):
print("用巴掌 教育")
deftest2(self):
print("test2")
classSon(Father,Mother):
pass
defteach(self):
#這樣調(diào)用,默認(rèn)調(diào)用第一個(gè)繼承類的方法
super().teach()
Father.teach(self)
Mother.teach(self)
print("自學(xué)成材")
Human.eat(self)
son = Son()
son.teach()#這樣調(diào)用斥扛,默認(rèn)調(diào)用第一個(gè)繼承類的方法
# son.test1()
# son.test2()
# son.eat()
#__mro__它會(huì)打印出一個(gè)類的調(diào)用順序入问,也就是找屬性和方法的順序路徑
# print(Son.__mro__)
#==========================================================================================
"""多態(tài)"""
classDog(object):
#類屬性,相當(dāng)于java的靜態(tài)變量,隨類走的稀颁,用類名調(diào)用
num =0
def__init__(self):
#這個(gè)age就相當(dāng)于實(shí)例屬性
self.age =10
Dog.num = Dog.num +1
@classmethod
defadd_num(cls):
"""類方法芬失,由這個(gè)裝飾器(注解)來標(biāo)識(shí),由類名調(diào)用"""
Dog.num +=10
@staticmethod
defmulti_num():
"""靜態(tài)方法匾灶,由staticmethod來標(biāo)識(shí)棱烂,這種方法可以沒有參數(shù),
其他都要有默認(rèn)參數(shù),所以它與類方法的主要區(qū)別就是有無參數(shù)^_^"""
Dog.num *=5
defprint_self(self):
print("i am a dog")
classGodDog(Dog):
def__init__(self):
super().__init__()
defprint_self(self):
print("haha this is a god dog")
defintroduce(temp):
"""多態(tài)阶女,直到運(yùn)行到這個(gè)地方的時(shí)候才知道對(duì)象是個(gè)什么東西"""
temp.print_self()
dog1 = Dog()
dog2 = GodDog()
introduce(dog1)
introduce(dog2)
#通過類名調(diào)用類方法
Dog.add_num()
#也可以通過對(duì)象來調(diào)用類方法
# dog1.add_num()
Dog.multi_num()
print(Dog.num)