Python中的纯虚拟方法

Python中的纯虚拟方法,python,oop,inheritance,virtual-functions,Python,Oop,Inheritance,Virtual Functions,在Python中实现纯虚拟方法的思想正确的方法是什么 只是在方法中提出了未实现的错误 还是有更好的办法 谢谢大家! 虽然这并不少见,但有些人会认为“正确”的方法(因为python 2.6)是通过以下方式使用抽象基类: 使用abc比使用NotImplementedError有两个主要(潜在)优势 首先,您将无法实例化抽象类(不需要\uuuu init\uuuuhacks): >>MyAbstractClass() 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 TypeError:无法使用

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

只是在方法中提出了
未实现的错误

还是有更好的办法


谢谢大家!

虽然这并不少见,但有些人会认为“正确”的方法(因为python 2.6)是通过以下方式使用抽象基类:


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

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

>>MyAbstractClass()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:无法使用抽象方法my\u abstract\u方法实例化抽象类MyAbstractClass
其次,您将无法实例化任何未实现所有抽象方法的子类:

>>> 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
类MyConcreteClass(MyAbstractClass): ... 通过 ... >>>MyConcreteClass() 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 TypeError:无法使用抽象方法my\u abstract\u方法实例化抽象类MyConcreteClass

>>> 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