首先,我有一个班级:
class MyClass(object):
def __init__(self, attr1, attr2):
self.attr1 = attr1
self.attr2 = attr2
class AnotherClass:
# what goes here ???
我想做的是让AnotherClass
接受两个输入,
a
MyClass
)
arg2
,以便arg2
可用于为AnotherClass
创建其他属性,MyClass
的每个属性也是AnotherClass
的属性,但不会重新找到或者复制到AnotherClass
实例中,但通过查看a
找到。 (假设MyClass
具有许多属性,与显示的示例不同。)例如,我希望能够做到
>>> a = MyClass(1, 2)
>>> b = AnotherClass(a, 3)
>>> b.attr1 # found via a.attr1
1
>>> b.attr2 # found via a.attr1
2
>>> b.attr3
3
>>> c = AnotherClass(a, 4)
>>> c.attr1 # found via a.attr1
1
>>> c.attr2 # found via a.attr1
2
>>> c.attr3
4
AnotherClass
中应该找到哪些代码?
答案 0 :(得分:1)
如果你真的想做你想做的事,你想要的构造函数是:
currentItem
第二行有效地获取当前分配给a的每个属性,然后将它们的副本分配给self(__dict__是python存储对象属性的字典)。
答案 1 :(得分:0)
您想要的代码是:
def __init__(self, a : Class, arg2):
super().__init__(a.attr1,a.attr2)
self.attr3 = arg2
但是,除非您的代码特别希望SubClasses的实例初始化为预先存在的Class实例的伪克隆,否则您可能会发现此代码更有用:
def __init__(self, attr1, attr2, arg2):
super().__init__(attr1,attr2)
self.attr3 = arg2