如何将外部类中的变量赋值给内部类?这是我最好的尝试:
in [1]: class one:
...: x = 1
...: class two:
...: y = x
...:
---------------------------------------------------------------------------
NameError: name 'x' is not defined
我不明白为什么这样做不起作用,但是Python对这种语法没有问题:
In [1]: x = 1
In [2]: class one:
...: y = x
...: class two:
...: z = x
...:
In [3]: one.two.z
Out[3]: 1
当遇到类定义时,Python会毫不犹豫地执行主体。你知道吗
首先,它将执行
class one
,在执行主体时(在实际创建类之前),它将遇到class two
,因此它将执行该操作。你知道吗在
class two
内,它将看到对one
的引用,但该引用仍然不存在,因此将引发NameError
。你知道吗查看Python处理类/函数的方式差异的一个简单方法是将第二个类定义包装到函数中。由于Python只编译函数而不执行它们,
class one
将被创建:现在
one
作为一个类存在。如果您执行one.wrap
第二个类定义将被执行,那么one
类将被找到,然后,按照您原来的示例执行;我将类two
设置为one
的属性,以获得与您所期望的效果相同的效果。你知道吗因此,名称解析工作正常,类
two
现在具有类one
属性:注意:将第二个类移到第一个类定义之外也是可行的,但这不是重点。你知道吗
您所做的对我来说毫无意义,无论如何,您可以通过将外部类的实例传递给内部类来访问外部类的实例变量。不建议使用嵌套类。您可以使用
Inheritance
来实现这一点。你知道吗输出:
相关问题 更多 >
编程相关推荐