相关疑难解决方法(0)

我应该把什么放在Python中的抽象方法体中

说我有以下抽象类Foo:

import abc

class Foo(abc.ABC):

    @abc.abstractmethod
    def bar(self):
        raise NotImplementedError
Run Code Online (Sandbox Code Playgroud)

我该怎么把这个bar方法放在身体里?

我看到了很多代码raise NotImplementedError,如上所示.但是,这似乎是多余的,因为任何未实现的子类bar都会引发TypeError: Can't instantiate abstract class Foo with abstract methods bar它实例化的时间.

将Pythonic bar留空是否如下:

import abc

class Foo(abc.ABC):

    @abc.abstractmethod
    def bar(self):
        ...
Run Code Online (Sandbox Code Playgroud)

这是在抽象基类的Python文档中所做的,但我不确定这只是占位符还是如何编写代码的实际示例.

如果bar只留下三个点(...),我应该何时使用NotImplementedError

python abstract-class python-3.x

6
推荐指数
2
解决办法
1300
查看次数

Python的空函数不需要传递语句?

我偶然发现了Python的一个有趣且意想不到的功能:

def fun():
    """Foo’s docstring"""
Run Code Online (Sandbox Code Playgroud)

是一个有效的功能?根据PEP 257," docstring是一个字符串文字,作为模块,函数,类或方法定义中的第一个语句出现 ",这意味着文档字符串本身被视为一个语句?

我原以为这至少pass需要一个声明.上面的例子与Python Zen的"显然优于隐式" 相矛盾,因为pass状态是显式意图,而文档字符串则不然.

任何人都可以对意图有所了解吗?

python python-3.x

6
推荐指数
1
解决办法
687
查看次数

标签 统计

python ×2

python-3.x ×2

abstract-class ×1