在这样的界面中定义属性是一个好习惯吗?
class MyInterface(object):
def required_method(self):
raise NotImplementedError
@property
def required_property(self):
raise NotImplementedError
答案 0 :(得分:3)
我会使用ABC class,但是是的;您甚至可以使用@abstractproperty
来处理该用例。
from abc import ABCMeta, abstractproperty, abstractmethod
class MyInterface(object):
__metaclass__ = ABCMeta
@abstractmethod
def required_method(self):
pass
@abstractproperty
def required_property(self):
pass
ABC的子类仍然可以自由地实现required_property
作为属性; ABC只会验证required_property
的存在,而不是它的类型。