首页 > 解决方案 > 一个类的对象是否有可能与它们所在的类属性具有相同的引用?

问题描述

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

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属性时,其属性和内部对象也会更改。Parentaddrchild1child2Parent

parent.child1.addr >>> 'USA'

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

parent.addr = 'France'

parent.child1.addr >>> 'USA'
parent.addr >>>'France'

标签: pythonpython-3.xoop

解决方案


你可以做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

推荐阅读