我想知道如何从外部类的属性中的类实例的作用域访问外部类。我听说过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
发布于 2018-06-21 06:00:38
如果内部需要一个对外部的引用,你应该传递它。
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)
发布于 2018-06-21 05:40:43
引用是单向的,对象不知道谁在引用它。所以你设置类的方式是不可能的。
不过,您似乎需要的是让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
https://stackoverflow.com/questions/50957382
复制相似问题