我想知道如何在外部类的属性中从类实例的范围访问外部类。我听说过super()
函数,但它仅适用于继承。
为了清楚起见,我举了一个例子:
class Outside:
def __init__(self, spam, ham):
self.eggs = spam * ham
self.inside_class = Inside()
class Inside:
def double_eggs(self):
# TODO: return the attribute eggs mulitplied by 2
答案 0 :(得分:1)
引用是单向的,对象不知道是谁在引用它。因此,不可能使用设置课程的方式。
尽管如此,您似乎想要Inside
来扩展Outside
的功能。您可以通过继承做到这一点。
class Outside:
def __init__(self, spam, ham):
self.eggs = spam * ham
class Inside(Outside):
def double_eggs(self):
return self.eggs * 2
obj = Inside(1, 2)
print(obj.double_eggs()) # 4
答案 1 :(得分:0)
如果“内部”需要引用“外部”,则应将其传递。
class Inside:
def __init__(self, outside):
self.outside = outside
def double_eggs(self):
return self.outside.eggs * 2
class Outside:
def __init__(self, spam, ham):
self.eggs = spam * ham
self.inside_class = Inside(self)