类的对象是否可能具有与它们所在的类属性相同的引用?

Vin*_*ida 3 python oop python-3.x

我不知道我的问题是不是太混乱,甚至是正确的,所以为了清楚起见,这里有一个例子:

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')
Run Code Online (Sandbox Code Playgroud)

每当我改变我想要做到的是addr对的属性Parent对象addr的属性child1child2对象的内部Parent也发生变化。

parent.child1.addr >>> 'USA'
Run Code Online (Sandbox Code Playgroud)

但是当我改变Parent对象时,对象Parent.child1保持不变。

parent.addr = 'France'

parent.child1.addr >>> 'USA'
parent.addr >>>'France'
Run Code Online (Sandbox Code Playgroud)

Tre*_*vis 5

你可以制作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
Run Code Online (Sandbox Code Playgroud)