假设我有两个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
答案 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的任何特定实例。