类属性中的类实例可以访问其外部类吗? 〜Python

时间:2018-06-20 21:35:19

标签: python python-3.x class oop

我想知道如何在外部类的属性中从类实例的范围访问外部类。我听说过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

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)