Python 如何在内部类中调用上层类的变量?
我必须调用一个在上层类定义的变量到内部类 代码 错误消息Python 如何在内部类中调用上层类的变量?,python,class,inner-classes,Python,Class,Inner Classes,我必须调用一个在上层类定义的变量到内部类 代码 错误消息 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 attri
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'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“”,第4行,在_init中__
文件“”,第7行,在_init中__
AttributeError:类型对象“outer”没有属性“Out”
- 要创建
,您应该在前面加上内部类的新实例
类名,即外部
外部.Inner()
- 在引用类之前,应该定义
类内部
- 在
中,您可以将容器对象传递到Outer.\uuuu init\uuuu
的创建实例中,即内部类
,该实例将作为外部.Inner(self)
内部方法中的参数
传递外部
类外部:
类内部:
定义初始值(自身、外部):
self.in\u out=外部。\u out
打印(自进自出)
定义初始化(自):
self.\u out='out'
self.\u in=外部.内部(self)
c=外部()
在您的情况下,outer.Out
是在实例上下文(self.Out
)中启动类属性时,尝试访问类属性(在类上下文中)。这是两种不同的情况
如果您仍然需要定义一个可以访问父类实例的嵌套类-将外部
实例传递给内部内部
构造函数作为参考:
class Outer:
class Inner:
def __init__(self, parent):
self.InOut = 'inner ' + parent.Out
def __init__(self):
self.Out = 'out'
self.In = Outer.Inner(self)
c = Outer()
print(c.In.InOut) # inner out
Out
是outer
的实例属性internal
没有从中获取属性的outer
实例:您试图从没有属性的类中读取属性。您可以将其传递到内部的init方法中。不太清楚你的目标是什么,也不清楚为什么一个类在另一个类中。而且类应该以大写字母开头。属性不应该。可以通过上述方法解决。虽然我不需要定义嵌套类,但仍然有相同的错误。这是否意味着我发布的代码应该从内部类移到外部类的上方?@NokiLee,应该可以。您使用的python版本是什么?这是python 3.7.4。很抱歉,当我没有使用嵌套类时,我忘了编写父类。@Samha',你错了-c.In.InOut
不明显被称为“静态上下文”@RomanPerekhrest你是对的,我因为在CAPS中使用变量而感到困惑。这里是最后一个自引用。
class Outer:
class Inner:
def __init__(self, parent):
self.InOut = 'inner ' + parent.Out
def __init__(self):
self.Out = 'out'
self.In = Outer.Inner(self)
c = Outer()
print(c.In.InOut) # inner out