从一个实例中定义的另一个实例访问该实例的属性

Access attribute of one instance from another instance defined in that instance

抱歉提出了令人困惑的问题。

假设有两个不同 classes 的两个实例(例如 'big_instance' 和 'little_instance')。 little_instance 被定义为大实例的属性。 小 class 中的方法如何访问大实例的属性。

下面是一个例子。 'return parent.attribute1' 行基本上是伪代码。这行怎么写才合适?

class BigClass:
    def __init__(self, att):
        self.attribute1 = att
        self.little_instance = LittleClass()

class LittleClass:
    def parents_att(self):
        return parent.attribute1

big_instance = BigClass(1)
print(big_instance.little_instance.parents_att())

如果你想从 BigClass 访问属性到 LittleClass,你可以执行以下操作。

class BigClass:
    def __init__(self, att):
        self.attribute1 = att


class LittleClass(BigClass):
    def __init__(self, att):
        BigClass.__init__(self, att)

    def parent_att(self):
        return self.attribute1


small_instance = LittleClass(1)
print(small_instance.parent_att)

啊,是的,我明白了。阅读评论以获得解释。

最后的测试代码显示,即使在 attribute1 更改后它仍然有效:)

class BigClass:
    def __init__(self, att):
        self.attribute1 = att
        # pass in self
        self.little_instance = LittleClass(self)

class LittleClass:
    def __init__(self, the_big_class):
        # the big class is held in an instance var
        self.the_big_class = the_big_class

    def parents_att(self):
        # the instance var is used to reference the attribute
        return self.the_big_class.attribute1

big_instance = BigClass(1)
print(big_instance.little_instance.parents_att())
big_instance.attribute1 = 2
print(big_instance.little_instance.parents_att())