首页 > 解决方案 > 如何在内部类中调用上层类的变量?

问题描述

我必须将在上层类定义的变量调用到内部类。

代码

class outer:
  def __init__(self):
    self.Out = 'out'
    self.In = self.inner()
  class inner:
    def __init__(self):
      self.InOut = outer.Out

c = outer()

错误信息

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in __init__
  File "<stdin>", line 7, in __init__
AttributeError: type object 'outer' has no attribute 'Out'

标签: pythonclassinner-classes

解决方案


  • 要创建 的新实例Inner class,您应该在前面加上Outer类名,即Outer.Inner()
  • 你应该Inner在引用它之前定义类。
  • 在 中Outer.__init__,您可以将容器对象传递给创建的实例Inner class,即Outer.Inner(self),它将作为方法中的参数outer传递Inner.__init__
class Outer:
  class Inner:
    def __init__(self, outer):
      self.in_out = outer._out
      print(self.in_out)

  def __init__(self):
    self._out = 'out'
    self._in = Outer.Inner(self)

c = Outer()

推荐阅读