对不起这个令人困惑的问题。
说有两个不同类的两个实例(例如'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())
是的,我明白了。阅读评论以获取解释。
最后的测试代码表明,即使在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())
如果要将属性从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)