如何从 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 _
...
添加回答
举报
0/150
提交
取消