在python中實現抽象類

2021-09-05 13:05:56 字數 1536 閱讀 9727

抽象類就是從一堆類中抽取相似的功能建立乙個類作為父類,子類繼承父類,子類產生的物件在呼叫的時候,用法一樣,方便使用。抽象類的定義的函式沒有實現功能,只是規定了函式名,而且抽象類沒法例項化。

class animals:

def run(self):

pass

class people(animals):

def run(self):

pass

class dog(animals):

def walk(self):

pass

class pig(animals):

def go(self):

pass

雖然定義了animals類定義了「走」的函式,但是子類中可以覆蓋父類中函式,子類產生的例項化物件中,在呼叫「走」的功能時,就比較麻煩不知道用什麼(run walk go)。因此需要抽象類統一下,抽象類的用法:

import abc  # 匯入模組

class animals(metaclass=abc.abcmeta): # 新增metaclass=abc.abcmeta

@abc.abstractmethod # 新增@abc.abstractmethod

def run(self):

pass

class people(animals):

def run(self):

print('running')

class dog(animals):

def run(self):

pass

class pig(animals):

def run(self):

pass

# animal = animals() # 報錯不能例項化

people = people()

people.run()

# running

子類中定義函式必須與之相符,呼叫時統一為run.

子類中必須有父類規定的函式,也可以新增其他函式

class animals(metaclass=abc.abcmeta):

@abc.abstractmethod

def run(self):

pass

class people(animals):

def run(self):

print('running')

class dog(animals):

def walk(self):

print('walking')

def run(self):

print('running')

class pig(animals): #

def run(self):

pass

# animal = animals() # 報錯不能例項化

dog = dog()

dog.walk()

#walking

python抽象類 抽象方法的實現

由於python沒有抽象類 介面的概念,所以要實現這種功能得abc.py這個類庫,具體方式如下 coding utf 8 import abc 抽象類 class studentbase object metaclass abc.abcmeta abc.abstractmethod defstudy...

python 抽象類 抽象方法的實現

由於python 沒有抽象類 介面的概念,所以要實現這種功能得abc.py 這個類庫,具體方式如下 1 from abc import abcmeta,abstractmethod23 抽象類 實現類 如果子類不實現父類的 getbaiduheaders方法,則丟擲typeerror can t i...

python 抽象類 抽象方法的實現

python 抽象類 抽象方法的實現 抽象基類提供了一種要求子類實現指定協議的方式,如果乙個抽象基類要求實現指定的方法,而子類沒有實現的話,當試圖建立子類或者執行子類 時會丟擲異常。python 沒有抽象類 介面的概念,所以要實現這種功能得abc.py 這個類庫 abc模組提供了乙個抽象基類宣告協議...