如何从嵌套类中引用另一个嵌套类

时间:2016-05-23 06:24:04

标签: python python-3.x peewee

我有以下嵌套结构:

from peewee import *

class Parent:
    ...
    class A:
        name = TextField()

    class B:
        from_A = ForeignKeyField(A)

我尝试在类B中的ForeignKeyField中引用类A,但AParent.A都返回名称未找到错误。从B类引用A类的正确方法是什么?这可能吗?

1 个答案:

答案 0 :(得分:2)

在定义B类时,类Parent未完全定义,因此无法使用:在定义时,您只能使用:

  • 全局变量
  • 属于正在定义的元素的变量

但是您无法访问封闭块中定义的变量,无论是否为类。

所以你只剩下两个选择:

  • 在Parent
  • 之外定义B类
  • 在定义完所有内容后,在运行时初始化元素(在这种意义上,运行时间立即从class Parent块的结尾开始):

    class Parent:
        ...
        class A:
            name = TextField()
    
        class B:
             ...
    
    Parent.B.from_A = ForeignKeyField(Parent.A)