繼承:
? ? 單繼承和多繼承
1.初識(shí)
class Father(object): #如果不寫object默認(rèn)繼承
? ? pass
class Son(Father): #括號(hào)里面的稱為:父類或基類或超類? 括號(hào)外面的稱為:子類或派生類
? ? pass
class Animal:
? ? breath = '呼吸'
? ? def __init__(self, name, sex, age):
? ? ? ? self.name = name
? ? ? ? self.sex = sex
? ? ? ? self.age = age
? ? def eat(self):
? ? ? ? print(self)#111? #<__main__.Person object at 0x111ac3710>
? ? ? ? print('動(dòng)物都需要進(jìn)食....')
class Person(Animal):
? ? pass
print(Person.breath)#呼吸
Person.eat(111)#動(dòng)物都需要進(jìn)食....
p1 = Person('Jake', '男', 20)
print(p1.breath)#呼吸
print(p1)#<__main__.Person object at 0x111ac3710>
p1.eat()#動(dòng)物都需要進(jìn)食....
結(jié)果:
? ? 呼吸
? ? 動(dòng)物都需要進(jìn)食....
? ? 呼吸
? ? <__main__.Person object at 0x111ac3710>
? ? <__main__.Person object at 0x111ac3710>
? ? 動(dòng)物都需要進(jìn)食....
總結(jié):
? ? 子類以及子類實(shí)例化的對(duì)象,可以訪問父類的任何方法和變量评甜。
? ? 類名可以訪問父類的所有內(nèi)容忍坷。
? ? 子類實(shí)例化的對(duì)象也可以訪問父類所有內(nèi)容。
只執(zhí)行父類的方法:子類中不要定義與父類同名的方法
只執(zhí)行子類的方法:在子類創(chuàng)建這個(gè)方法.
既要執(zhí)行子類的方法,又要執(zhí)行父類的方法?
有兩種解決方法.1.通過類名。2.通過super()函數(shù)
? ? 1,Animal.__init__(self, name, sex, age)
? ? 2,super().__init__(name,sex,age)
class Animal:
? ? breath = '呼吸'
? ? def __init__(self, name, sex, age):
? ? ? ? self.name = name
? ? ? ? self.sex = sex
? ? ? ? self.age = age
? ? def eat(self, argv):
? ? ? ? print('%s吃%s' % (self.name, argv))
class Person(Animal):
? ? def __init__(self, name,sex,age,wing):
? ? ? ? # Animal.__init__(self, name, sex, age)
? ? ? ? super().__init__(name,sex,age)? #? super(Brid,self).__init__(name,sex,age)
? ? ? ? self.wing = wing
? ? def eat(self,argv):
? ? ? ? super().eat(argv)
? ? ? ? print('吃...')
p1 = Person('鸚鵡','男',20,'綠翅膀')
print(p1.__dict__)
p1.eat('金蟬')
結(jié)果:
? ? {'name': '鸚鵡', 'sex': '男', 'age': 20, 'wing': '綠翅膀'}
? ? 鸚鵡吃金蟬
? ? 吃...
2.進(jìn)階
類: 經(jīng)典類, 新式類
新式類: 凡是繼承object類都是新式類.
? ? python3x 所有的類都是新式類,因?yàn)閜ython3x中的類都默認(rèn)繼承object.
經(jīng)典類: 不繼承object類都是經(jīng)典類
? ? python2x:(既有新式類,又有經(jīng)典類) 所有的類默認(rèn)都不繼承object類,
? ? ? ? ? ? 所有的類默認(rèn)都是經(jīng)典類.你可以讓其繼承object.
單繼承: 新式類,經(jīng)典類查詢順序一樣.
多繼承:
? ? 新式類: 遵循廣度優(yōu)先.
? ? 經(jīng)典類: 遵循深度優(yōu)先.
多繼承的新式類? 廣度優(yōu)先 : 一條路走到倒數(shù)第二級(jí),判斷,如果其他路能走到終點(diǎn),則返回走另一條路.如果不能,則走到終點(diǎn).
多繼承的經(jīng)典類? 深度優(yōu)先 : 一條路走到底.