首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >class属性中的类实例是否可以访问其外部类?~ Python

class属性中的类实例是否可以访问其外部类?~ Python
EN

Stack Overflow用户
提问于 2018-06-21 05:35:19
回答 2查看 50关注 0票数 -1

我想知道如何从外部类的属性中的类实例的作用域访问外部类。我听说过super()函数,但它只适用于继承。

为了清楚起见,我举了一个例子:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-21 06:00:38

如果内部需要一个对外部的引用,你应该传递它。

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2018-06-21 05:40:43

引用是单向的,对象不知道谁在引用它。所以你设置类的方式是不可能的。

不过,您似乎需要的是让Inside扩展Outside的功能。你可以通过继承来做到这一点。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50957382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档