1
什麼
說我有以下的抽象類Foo
:我應該把體內的抽象方法在Python
import abc
class Foo(abc.ABC):
@abc.abstractmethod
def bar(self):
raise NotImplementedError
我應該把在bar
方法的主體?
我看到很多代碼有raise NotImplementedError
,如上所示。但是,這似乎是多餘的,因爲任何未實現bar
的子類在實例化時都會引發TypeError: Can't instantiate abstract class Foo with abstract methods bar
。
它是Python的離開bar
空,如下所示:
import abc
class Foo(abc.ABC):
@abc.abstractmethod
def bar(self):
...
這就是在Python文檔做了Abstract Base Classes,但我不知道這只是一個佔位符或一個實際的例子如何編寫代碼。
如果將bar
只留下三個點(...
),那麼我應該何時使用NotImplementedError
?
感謝您的鏈接。 [MutableSet.add](https://hg.python.org/cpython/file/3.5/Lib/_collections_abc.py#l508)和[MutableSet.discard](https://hg.python.org/cpython/file /3.5/Lib/_collections_abc.py#l513)會引發'NotImplementedError',所以我想我應該堅持使用那個約定而不是'...'。 – ostrokach