標籤:dict 方法 python2 判斷 兩種 衍生類別 ini 查詢 obj
繼承: 單繼承和多繼承1.初識class Father(object): #如果不寫object預設繼承 passclass Son(Father): #括弧裡面的稱為:父類或基類或超類 括弧外面的稱為:子類或衍生類別 passclass 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): passprint(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.單繼承: 新式類,經典類查詢順序一樣.多繼承: 新式類: 遵循廣度優先. 經典類: 遵循深度優先.多繼承的新式類 廣度優先 : 一條路走到倒數第二級,判斷,如果其他路能走到終點,則返回走另一條路.如果不能,則走到終點.多繼承的經典類 深度優先 : 一條路走到底.
Python物件導向之繼承