我有一个抽象类,Model
,有几个抽象方法,我应该在方法体中放什么?Python中的抽象方法体3.5
一个返回
class Model(metaclass=ABCMeta): @abstractmethod def foo(self): return
甲通
class Model(metaclass=ABCMeta): @abstractmethod def foo(self): pass
提高描述性错误
class Model(metaclass=ABCMeta): @abstractmethod def foo(self): raise NotImplementedError("Class {class_name} doesn't implement {func_name} function" .format(class_name=self.__class__.__name__, func_name=self.__init__.__name__))
通常我会实现方法3,提高一个错误,但它看起来是多余的,因为Python会引发我的一个错误:
>>> bar = module.Model()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Can't instantiate abstract class Model with abstract methods foo
提供的选项之间,这是最好的做法?还是有另一种方法我应该处理这个问题?
不要忘记调用代码是可能的,即支持'super()。foo()'。 – dhke
[我应该在Python的抽象方法中放置什么]的副本(https://stackoverflow.com/q/40894284/2301450)。 – vaultah