Python反向反省

2024-10-04 11:35:37 发布

您现在位置:Python中文网/ 问答频道 /正文

让我们假设这个例子:两个同级类,其中一个类作为新属性加载另一个类,然后我希望从同级内部的主类中使用这个属性。在

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)

我想做的是:

^{pr2}$

这将返回类似self.self.aplus公司(打个比方),那就是4

继续:从一个内部的BE类获取aplus属性,不声明为参数,但进行“反向内省”,如果可能的话,考虑到“a”变量必须已经通过AN加载。在

抱歉,如果我没有说清楚,但我已经尝试简化我的真实代码所发生的事情。在

我想问题可能是我在课堂上使用的技巧。但不知道是什么或如何让它变得更好。在

谢谢


Tags: selfanget属性objectinitdef公司
1条回答
网友
1楼 · 发布于 2024-10-04 11:35:37

操作问题:

get aplus attribute from AN inside BE class, without declaring as arguments, but doing a "Reverse introspection", if it possible, considering the 'a' variable must be already loaded trough AN.

最接近于“反向反省”的是搜索gc.getreferrers()。在

也就是说,最好是简单地把关系说清楚

class AN(object):
   def __init__(self,a):
       self.aplus = a + 2
       self.BECls = BE(self, a)

class BE(object):
   def __init__(self, an_obj, a):
       self.an_obj = an_obj
       print a

   def get_aplus(self):
       return self.an_obj.aplus

if __name__ == '__main__':
    a = 2
    c = AN(a)
    print c.BECls.get_aplus()     # this returns 4

相关问题 更多 >