【发布时间】:2012-05-07 20:41:56
【问题描述】:
让我们假设这个例子:两个兄弟类,其中一个加载另一个类作为新属性,然后我希望在兄弟内部的主类中使用这个属性。
a = 2
class AN(object):
def __init__(self,a):
self.aplus = a + 2
self.BECls = BE(a)
class BE(object):
def __init__(self,a):
print a
def get_aplus(self):
????
c = AN(a)
我想做:
c.BECls.get_aplus()
这将返回类似于 self.self.aplus 的东西(比喻地),即 4
恢复:从 BE 类中的 AN 获取 aplus 属性,不声明为参数,但如果可能,考虑“a”变量必须已经通过 AN 加载。
对不起,如果我没有说清楚,但我已经尝试简化我的真实代码所发生的事情。
我想问题可能是我在课堂上使用的技术。但不确定是什么或如何使它变得更好。
谢谢
【问题讨论】:
-
为什么不能只给
BE对象一个对其对应AN的引用? -
其实这是我喜欢做的,但是怎么做呢??干杯
-
我不能只给 BE 一个对象 (an_obj = AN(self.a)),因为它会陷入无限循环,试图一遍又一遍地加载自身,导致 RunTimeError 上升。
-
@RaymondHettinger 的答案中的代码显示了如何。
标签: python class introspection siblings