1

在这样的接口中定义属性是一种好习惯吗?

class MyInterface(object):
    def required_method(self):
        raise NotImplementedError

    @property
    def required_property(self):
        raise NotImplementedError
4

1 回答 1

4

我会为此使用ABC 类,但是是的;您甚至可以将 a@abstractproperty用于该用例。

from abc import ABCMeta, abstractproperty, abstractmethod

class MyInterface(object):
    __metaclass__ = ABCMeta

    @abstractmethod
    def required_method(self):
        pass

    @abstractproperty
    def required_property(self):
        pass

required_propertyABC 的子类仍然可以作为属性自由实现;ABC 只会验证 的存在required_property,而不是它是什么类型。

于 2013-02-01T11:40:02.787 回答