为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 Python 中的内部类访问外部类成员?

如何从 Python 中的内部类访问外部类成员?

繁花如伊 2021-09-11 16:47:24
如何从 Python 3 中的内部类访问外部类成员?下面是我的代码片段。class Outer:        def __init__(self):        self.__x = 20        self.__str = "Outer Class"    def show(self):        self.i1 = self.Inner(Outer())        self.i1.display()    def fn(self):        print("Hello from fn() of Outer Class")        print("str : ", self.__str)    class Inner:        def __init__(self, outer):            self.__str_in = "Inner Class"            self.outer = outer        def display(self):            print("str_in : ", self.__str_in)            print("Inside display() of Inner Class")            # print("x : ", self.outer.__x)            # print("str : ", self.outer.__str)            # self.outer.fn()obj = Outer()obj.show()如果我执行注释行,它会抛出一个错误说 -line 23, in display    print("x : ", self.outer.__x)AttributeError: type object 'Outer' has no attribute '_Inner__x'任何人都可以帮忙吗?提前致谢。
查看完整描述

2 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

问题是要传递的类,而不是一个实例中self.i1 = self.Inner(Outer),并且self.__str是一个实例属性。


还有另一个问题。您使用的__前缀会受到name mangling 的影响,因此请尽量避免这种情况。


您有 2 种方法可以解决此问题:


传递实例,即 self.i1 = self.Inner(self)

或者


创建_str一个类属性:


class Outer:

    _str = "Outer Class"  # NOTE THE SINGLE _


    def __init__(self):

        self._x = 20 # NOTE THE SINGLE _


    ...           


查看完整回答
反对 回复 2021-09-11
  • 2 回答
  • 0 关注
  • 251 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信