cru*_*nk1 12 python oop inner-classes python-2.7
我试图从另一个内部类引用一个内部类。我都试过:
class Foo(object):
  class A(object):
    pass
  class B(object):
    other = A
和
class Foo(object):
  class A(object):
    pass
  class B(object):
    other = Foo.A
各自的结果:
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
和
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
这可能吗?
这是不可能的,因为您在类中定义的所有内容仅在该类的实例中成为有效成员,除非您使用 定义方法@staticmethod,但类没有这样的属性。
所以,这也行不通:
class Foo(object):
    x = 10
    class A(object):
        pass
    class B(object):
        other = x
这会起作用,但这不是您想要的:
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)
输出是:
<class '__main__.Foo.A'>
这样做的原因是方法(在这种情况下__init__)在创建对象时__init__被评估,而在读取和解释类时评估之前的赋值。
你可以通过简单地在自己的模块中定义所有类来获得你想要的东西。导入模块,使其成为一个对象,其字段是您在其中定义的类。
| 归档时间: | 
 | 
| 查看次数: | 3908 次 | 
| 最近记录: |