使用ABC,我可以使用以下命令來創建抽象類:如何在不使用抽象方法的情況下使用abc創建抽象類?
from abc import ABC, abstractmethod
class A(ABC):
@abstractmethod
def foo(self):
print('foo')
class B(A):
pass
obj = B()
因爲B
沒有定義的方法foo
這將失敗。 這模仿了Java中的抽象方法功能。
我想知道抽象類的功能是否也存在於Python中,在沒有任何抽象方法的情況下阻止實例化一個類。
我不明白你的問題。 「在沒有任何抽象方法的情況下阻止實例化類的地方」是什麼意思?你想強制這個類來實現abstractmethods? – Vinny
在Java中,抽象方法和抽象類是兩個不同的概念。抽象方法應該由子類定義,抽象類不能實例化。但在python的abc模塊中(據我瞭解)兩者都綁在一起。有沒有一種方法來定義抽象類,而不用像抽象方法那樣裝飾任何方法? –