当我找到abc模块(https://docs.python.org/3/library/abc.html)时,我只是在寻找在 Python 中定义抽象基类的方法。
经过一番阅读,我看到了以下课程:
class C(ABC):
@abstractmethod
def my_abstract_method(self, ...):
...
@classmethod
@abstractmethod
def my_abstract_classmethod(cls, ...):
...
Run Code Online (Sandbox Code Playgroud)
想知道三个点,我发现它被称为Ellipsis( https://docs.python.org/3/library/constants.html#Ellipsis )。到目前为止,我只在结合类型提示的情况下看到并使用过它,在这种情况下它非常有意义。
但是为什么要在抽象方法的定义中使用省略号呢?就个人而言,我要么做
def my_abstract_method(self):
raise RuntimeError("NotImplemented")
Run Code Online (Sandbox Code Playgroud)
或者
def my_abstract_method(self):
pass
Run Code Online (Sandbox Code Playgroud)
那么为什么pass官方文档中更喜欢省略号呢?它只是自以为是吗?
python ×1