猿问

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

如何从 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'

任何人都可以帮忙吗?提前致谢。


繁花如伊
浏览 256回答 2
2回答

慕姐4208626

问题是要传递的类,而不是一个实例中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 _    ...           
随时随地看视频慕课网APP

相关分类

Python
我要回答