python3中類的繼承
阿新 • • 發佈:2021-10-18
1、假設定義一個鳥類 BirdBase,包含兩個屬性name、age;兩個方法eat(),fly()
#!/usr/bin/env python # -*- coding: utf-8 -*- # @File : bird_base.py # @Author: ttwang # @Date : 2021/10/18 # @Desc : 鳥類BirdBase class BirdBase(object): """ 假設定義一個鳥類BirdBase 其中兩個屬性name,age 兩個方法eat(),fly() #ps: python3中,類定義預設繼承object,可以不寫,但是建議寫上""" def __init__(self,name,age): self.name = name self.age = age def eat(self): print("Bird" + self.name + "is eating foods") def fly(self): print("Bird" + self.name + "is flying")
2、假設此時我們還有個類Swallow,該類中也包含上面BirdBase類的兩個方法和兩個屬性,然後還有自己的屬性color和方法swallow_chirp(),
我們可以選擇不用重寫這兩個方法,直接從BirdBase類中繼承過來,直接使用:
1)首先將BirdBase類匯入,然後Swallow類繼承它:from模組名import類名
2)對於BirdBase類中沒有的屬性和方法,我們需要單獨定義
#!/usr/bin/env python # -*- coding: utf-8 -*- # @File : swallow.py # @Author: ttwang # @Date : 2021/10/18 # @Desc : Swallow類 from python_learning.bird_base import BirdBase class Swallow(BirdBase): #Swallow繼承BirdBase def __init__(self,name,age,color): """ super()函式表示呼叫父類BirdBase的__init__()方法進行初始化; 但Swallow類中有自己特定的屬性color,而父類中無改屬性,故單獨賦值: self.color = color """ super(Swallow, self).__init__(name,age) self.color = color def swallow_chirp(self): """ Swallow類同樣可以有自己特定的方法 """ print("Swallow" + self.name + "is chirping, it is" + self.color) my_swallow = Swallow('humy',18,'black') my_swallow.swallow_chirp() my_swallow.eat() my_swallow.fly()
輸出:
# 從輸出結果,可以看出Swallow類即可以呼叫自己類中特定的方法,也可以呼叫父類BirdBase中的方法 Swallow humy is chirping, it is black Bird humy is eating foods Bird humy is flying