我很好奇attrs如何与抽象类结合使用。我想定义一个抽象类,它定义了每个继承类必须具有的抽象属性。
我想为这个继承类使用 attrs 来定义它的属性。所以我试着玩一下两者:
import abc
import attr
class Parent(object):
__metaclass__ = abc.ABCMeta
@abc.abstractproperty
def x(self):
pass
@attr.s()
class Child(Parent):
x = attr.ib()
c = Child(9)
c.x = 7
引发以下错误:
AttributeError: can't set attribute
也许有一种方法可以使用 attrs 将属性声明为抽象的?:
@attr.s()
class Parent(object):
__metaclass__ = abc.ABCMeta
x = attr.ib(abstract=True)
如果有人找到更好的方法来获得这两个模块的好处,我将非常感激!
提前谢谢了!