1. 程式人生 > 其它 >python3中類的繼承

python3中類的繼承

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