2016-05-23 45 views
0

内引用另一个嵌套类,我有以下嵌套结构:如何从嵌套类

from peewee import * 

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

    class B: 
     from_A = ForeignKeyField(A) 

我试图B类中的ForeignKeyField内引用类A,但两者AParent.A返回名称不发现错误。从B类中引用A类的正确方法是什么?这可能吗?

+0

不使用嵌套类。 – Daniel

+0

@Daniel - 我同意在这种情况下,似乎嵌套类是错误的解决方案,但有些情况下嵌套类可以是一个很好的解决方案。我认为建议全面禁止是一个坏主意 - 如果这是你想说的话。 –

+0

也许现在[mcve]? – boardrider

回答

2

在B类的定义的时候,班级家长没有完全确定,因此无法使用:在定义时,你只能使用:

  • 全局变量
  • 变量属于元素被定义为

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

所以,你只剩下两个选择:

  • 定义父之外B类
  • 初始化在运行时的元素都已经被定义后(在这个意义上,运行时立即开始在class Parent block`结束):

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