从一个实例中定义的另一个实例访问该实例的属性
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())
抱歉提出了令人困惑的问题。
假设有两个不同 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())