python 抽象類 抽象方法的實現

2021-10-24 15:50:51 字數 1376 閱讀 3743

python 抽象類、抽象方法的實現

抽象基類提供了一種要求子類實現指定協議的方式,如果乙個抽象基類要求實現指定的方法,而子類沒有實現的話,當試圖建立子類或者執行子類**時會丟擲異常。

python 沒有抽象類、介面的概念,所以要實現這種功能得abc.py 這個類庫

abc模組提供了乙個抽象基類宣告協議的機制,並且子類一定要提供了乙個符合該協議的實現。

from abc import abcmeta, abstractmethod

class task(metaclass = abcmeta):

def __init__(self, x, y):

self.x = x

self.y = y

@abstractmethod

def run(self):

pass

一、task類本身不能被例項化,否則會報錯。

t = task(1, 3)

執行結果:

traceback (most recent call last):

file "e:/python/pythoncode/lab_x/demo05.py", line 47, in

t = task(1, 3)

typeerror: can't instantiate abstract class task with abstract methods run

二、對於不能正確重寫父類方法的子類,例項化時會報錯

class othersubtask(task):

def __init(self, x, y):

super().__init__(x, y)

ot = othersubtask(1, 3)

執行結果:

traceback (most recent call last):

file "e:/python/pythoncode/lab_x/demo05.py", line 48, in

ot = othersubtask(1, 3)

typeerror: can't instantiate abstract class othersubtask with abstract methods run

二、定義乙個重寫父類方法的子類,那麼子類就能夠被例項化,就能正常工作。

class subtask(task):

def __init(self, x, y):

super().__init__(x, y)

def run(self):

print('task(x=%s, y=%s)' % (self.x, self.y))

st = subtask(1, 3)

st.run()

執行結果:

task(x=1, y=3)

抽象類 抽象方法

抽象類 1.類名前有abstruct修飾。有構造方法。在建立抽象類的子類的時候,還是會先建立抽象父類的物件的。2.抽象類不能例項化是指不能手動的new。抽象方法 1.抽象方法 沒有方法體且需要用abstruct關鍵字修飾 作用 需要改變的地方都應該是抽象。抽象方法只能存在於抽象類或介面中。2.有抽象...

抽象類,抽象方法

1 抽象類中可以有實現的方法。抽象方法必須在抽象類中。using system using system.collections.generic using system.linq using system.text namespace test 抽象類可以包含抽象屬性 public int age...

抽象類 抽象方法

抽象方法 使用 abstract修飾的方法,只有方法的宣告 沒有方法體 定義的是一種 規範 就是告訴子類必須要給抽象方法提供具體的實現 抽象類 包含抽象方法的類就是抽象類 通過abstract方法定義規範 然後要求子類必須定義具體實現 通過抽象類 我們就可以做到嚴格限制子類的設計 使子類之間更加通用...