类的对象是否可能具有与它们所在的类属性相同的引用?
我不知道我的问题是不是太混乱,甚至是正确的,所以为了清楚起见,这里有一个例子:
class Parent():
def __init__(self,addr):
self.addr = addr
self.child1 = Child(self.addr)
self.child2 = Child(self.addr)
class Child():
def __init__(self,addr):
self.addr = addr
parent = Parent('USA')
每当我改变我想要做到的是addr对的属性Parent对象addr的属性child1和child2对象的内部Parent也发生变化。
parent.child1.addr >>> 'USA'
但是当我改变Parent对象时,对象Parent.child1保持不变。
parent.addr = 'France'
parent.child1.addr >>> 'USA'
parent.addr >>>'France'
回答
你可以制作Child.addr一个property获取addr父级的:
class Parent:
def __init__(self, addr):
self.addr = addr
self.child1 = Child(self)
self.child2 = Child(self)
class Child:
def __init__(self, parent):
self.parent = parent
@property
def addr(self):
return self.parent.addr