gpt4 book ai didi

python - Python 中的纯虚方法

转载 作者:太空狗 更新时间:2023-10-29 18:02:23 29 4
gpt4 key购买 nike

在 Python 中实现纯虚方法的思想上正确的方法是什么?

只是在方法中引发NotImplementedError

或者有更好的方法吗?

谢谢!

最佳答案

虽然看到 people using NotImplementedError 并不少见,有些人会争辩说,“正确”的做法(自 python 2.6 起)是通过 abc module 使用抽象基类 :

from abc import ABCMeta, abstractmethod

class MyAbstractClass(object):
__metaclass__=ABCMeta
@abstractmethod
def my_abstract_method():
pass

与使用 NotImplementedError 相比,使用 abc 有两个主要(潜在)优势。

首先,您将无法实例化抽象类(不需要 __init__ hacks):

>>> MyAbstractClass()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can't instantiate abstract class MyAbstractClass with abstract methods my_abstract_method

其次,您将无法实例化任何未实现所有抽象方法的子类:

>>> class MyConcreteClass(MyAbstractClass):
... pass
...
>>> MyConcreteClass()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can't instantiate abstract class MyConcreteClass with abstract methods my_abstract_method

Here's a more complete overview on abstract base classes

关于python - Python 中的纯虚方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21610836/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com