假设我有两个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
B中的方法是这样的:
然后:
这种方式要求setXinA由B的实例调用,而不仅仅是B.setXinA(42)。而且,它将x设置为类A的属性,而不是A的任何特定实例
相关问题 更多 >
编程相关推荐