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

问题描述 投票:0回答:2

对不起这个令人困惑的问题。

说有两个不同类的两个实例(例如'big_instance'和'little_instance')。little_instance定义为大实例的属性。小类中的方法将如何访问大实例的属性。

下面是一个例子。“ 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())
python class oop instance
2个回答
0
投票

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

最后的测试代码表明,即使在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())

-1
投票

如果要将属性从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)
© www.soinside.com 2019 - 2024. All rights reserved.