# 繼承是一種創建新類的方式,新建的類可以繼承一個,或者多個父類, # 父類又可以稱為基類或者超類,新建的類可以稱為派生類,子類 class ParentClass1: # 定義父類 1 pass class ParentClass2: # 定義父類 2 pass class SubClass1(P... ...
# 繼承是一種創建新類的方式,新建的類可以繼承一個,或者多個父類, # 父類又可以稱為基類或者超類,新建的類可以稱為派生類,子類 class ParentClass1: # 定義父類 1 pass class ParentClass2: # 定義父類 2 pass class SubClass1(ParentClass1): # 繼承一個父類 pass class SubClass2(ParentClass1,ParentClass2): # 繼承兩個父類 pass print(SubClass1.__bases__) # 查看父類 print(SubClass2.__bases__) class Animal: def eat(self): print("%s is eating" %self.name) def drink(self): print("%s is drinking" % self.name) def shit(self): print("%s is shiting" %self.name) def pee(self): print("%s is peeing" %self.name) # 子類可以使用父類的函數屬性和數據屬性 class Cat(Animal): def __init__(self,name): self.name = name self.breed = "貓" def cry(self): print("喵喵叫") class Dog(Animal): def __init__(self,name): self.name = name self.breed = "狗" def cry(self): print("汪汪叫") c1 = Cat("小白家的黑貓") c1.eat() # 當前類中如果沒有eat屬性,就會去父類中找 c2 = Cat("小黑家的白貓") c2.drink() d1 = Dog("胖子家的瘦狗") d1.eat() # 如果子類中有和父類中相同的屬性,會優先使用子類中的屬性(如果沒有特殊說明) # 因此,我們在開發的過程中,如果定義了一個類A,然後想重新建立一個類B,而且 # B的很多功能和A是相同的,我們只需要把A繼承過來,然後在B中寫一寫不一樣的功能 # 就可以了 # 註意當有繼承的時候,一定要註意屬性查找 class F: def f1(self): print("F.f1") def f2(self): print('F.f2') self.f1() class S(F): def f1(self): print("S.f1") s = S() s.f2() # 我們來看一下代碼執行過程 # s為一個對象--要執行f2方法--自己的類中沒有--在父類中找--父類中有-- # 註意;父類中這個self是s--列印F.f2--然後執行f1,--先在自己類中找,-- # 找到了--列印S.f1 # 假如我們在子類中相用父類的方法,兩種辦法 # 一,直接用類名即:父親名.方法名() # 二,super() class Animal: def __init__(self,name,age,gender): self.name = name self.age = age self.gender = gender class people(Animal): def __init__(self,name,age,gender): Animal.__init__(self,name,age,gender) class Cat(Animal): def __init__(self,name,age,gender): # 這是不用傳入對象本身, # super()相當於super(Cat,self) super().__init__(name,age,gender) peo = people('wangcong',21,'mal') cat = Cat('cat',2,'male') print(peo.name,cat.name) # wangcong cat # 最後總結一點,有關組合和繼承, # 1,人是動物,貓是動物,這就是繼承關係, # 2,學校有教室,學生有書本。這就是組合關係, # 一個類在另一個類中,一個對象跟另一個對象有關係 # 簡單看一下組合 list1 = list() # 我們之前說list是一個類,用來實例化一個對象 str1 = "hello" # 同樣str1也是一個字元串對象 list1.append(str1) print(list1) # 此時,他們之間就是組合關係