Python - reference inner class from other inner class
我试图引用另一个内部类的内部类。我试过两种方法:
1 2 3 4 5 6 7 | class Foo(object): class A(object): pass class B(object): other = A |
和
1 2 3 4 5 6 7 | class Foo(object): class A(object): pass class B(object): other = Foo.A |
结果如下:
1 2 3 4 5 | Traceback (most recent call last): File"python", line 1, in <module> File"python", line 6, in Foo File"python", line 7, in B NameError: name 'A' is not defined |
和
1 2 3 4 5 | Traceback (most recent call last): File"python", line 1, in <module> File"python", line 6, in Foo File"python", line 7, in B NameError: name 'Foo' is not defined |
这是可能的吗?
这是不可能的,因为您在类中定义的所有内容仅在该类的实例中成为有效的成员,除非您使用
所以,这也不管用:
1 2 3 4 5 6 7 8 | class Foo(object): x = 10 class A(object): pass class B(object): other = x |
这是可行的,但不是你想要的:
1 2 3 4 5 6 7 8 9 10 11 12 | class Foo(object): x = 10 class A(object): pass class B(object): def __init__(self): self.other = Foo.A f = Foo() print(f.B().other) |
输出是:
1 | <class '__main__.Foo.A'> |
这样做的原因是,创建对象时对方法(在本例中为
通过简单地定义自己模块内的所有类,您可以得到想要的相同东西。导入模块,使它成为一个对象,它的字段是您在其中定义的类。