从Python中的嵌套类访问更高级别的类

时间:2015-01-21 15:25:53

标签: python

假设我有两个Python类,A和B,并且B是A的属性.B的方法可以修改A的属性吗?例如,我希望能够致电

A.B.setXinA(1)
A.x
>>> 1

围绕它的一种方法是在B中嵌入对A的引用:

A.B.reftoA = A

但那很难看......有没有办法直接访问更高级别的课程?下面是使用第二种方法的工作示例:

class A:
  def __init__(self, b):
    b.parent = self
    setattr(self, b.name, b)

class B:
  def __init__(self, name):
    self.name = name

b = B('abc')
a = A(b)  # b is now a.abc
abc.parent.x = 1
a.x
>>> 1

1 个答案:

答案 0 :(得分:0)

B中的方法怎么样:

class B:
  def __init__(self, name):
    self.name = name

  def setXinA(self, x):
      self.parent.x = x

然后:

>>> b = B('abc')
>>> a = A(b)

>>> b.setXinA(19)

>>> print(A.x)
19

这种方式要求setXinA由B的实例调用,而不仅仅是B.setXinA(42)。此外,它将x设置为A类的属性,而不是A的任何特定实例。