繼承: 單繼承和多繼承 1.初識 class Father(object): #若是不寫object默認繼承 pass class Son(Father): #括號裏面的稱爲:父類或基類或超類 括號外面的稱爲:子類或派生類 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('動物都須要進食....') class Person(Animal): pass print(Person.breath)#呼吸 Person.eat(111)#動物都須要進食.... p1 = Person('Jake', '男', 20) print(p1.breath)#呼吸 print(p1)#<__main__.Person object at 0x111ac3710> p1.eat()#動物都須要進食.... 結果: 呼吸 111 動物都須要進食.... 呼吸 <__main__.Person object at 0x111ac3710> <__main__.Person object at 0x111ac3710> 動物都須要進食.... 總結: 子類以及子類實例化的對象,能夠訪問父類的任何方法和變量。 類名能夠訪問父類的全部內容。 子類實例化的對象也能夠訪問父類全部內容。 只執行父類的方法:子類中不要定義與父類同名的方法 只執行子類的方法:在子類建立這個方法. 既要執行子類的方法,又要執行父類的方法? 有兩種解決方法.1.經過類名。2.經過super()函數 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('金蟬') 結果: {'name': '鸚鵡', 'sex': '男', 'age': 20, 'wing': '綠翅膀'} 鸚鵡吃金蟬 吃... 2.進階 類: 經典類, 新式類 新式類: 凡是繼承object類都是新式類. python3x 全部的類都是新式類,由於python3x中的類都默認繼承object. 經典類: 不繼承object類都是經典類 python2x:(既有新式類,又有經典類) 全部的類默認都不繼承object類, 全部的類默認都是經典類.你能夠讓其繼承object. 單繼承: 新式類,經典類查詢順序同樣. 多繼承: 新式類: 遵循廣度優先. 經典類: 遵循深度優先. 多繼承的新式類 廣度優先 : 一條路走到倒數第二級,判斷,若是其餘路能走到終點,則返回走另外一條路.若是不能,則走到終點. 多繼承的經典類 深度優先 : 一條路走到底.