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方法定義規範 然後要求子類必須定義具體實現 通過抽象類 我們就可以做到嚴格限制子類的設計 使子類之間更加通用...