【发布时间】:2018-04-22 06:11:48
【问题描述】:
我有 2 个非常相似的课程:A 和 B:
import attr
@attr.s
class A(object):
x = attr.ib()
y = attr.ib()
@attr.s
class B(object):
x = attr.ib()
z = attr.ib()
y = attr.ib(default=None)
如您所见,它们共享 2 个属性(x 和 y),但在 A 类中,y 属性是位置属性,而在 B 中是可选的。
我想将这些类归为一个超类,但如果我尝试让 B 类从 A 类继承,我会收到以下错误:
SyntaxError: duplicate argument 'y' in function definition
添加了我用来引发错误的代码:
@attr.s
class A(object):
x = attr.ib()
y = attr.ib()
@attr.s
class B(A):
z = attr.ib()
y = attr.ib(default=None)
所以我的问题是:是否可以使用 attrs 模块将这些类分组到一个超类中?如果不是,您是否建议我像“旧时尚”那样将它们分组(我自己实现 init 方法)?
非常感谢!
【问题讨论】:
-
目前想到的最好的事情是让两个类都继承自定义属性 x 的类 C
标签: python python-attrs