嵌套类变量python

时间:2015-02-02 19:21:43

标签: python nested-class

我试图在内部类中使用外部类中的变量分配变量。

class OUTER(QtGui.QWidget):
    def __init__(self):        
        super (OUTER, self).__init__()
        self.initUI()
    def number (self):
        self.out = 50
    ...

    class INNER(QtGui.QLCDNumber)
        in = OUTER.out  #error: NameError: name 'OUTER' is not defined

        @pyqtSlot()
        def some_func(self):
            self.display(self.in)

我收到错误

NameError: name 'OUTER' is not defined.  

有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

你不能这样做。

直到整个外部类声明完成后才定义OUTER。类主体是可执行代码;它们在定义时执行。定义正文时,会将其分配给名称,但在此之前名称不存在。

这就是为什么嵌套类在Python中很少是个好主意的原因之一。内部类没有获得对外部类的任何特殊访问权限,因此根本没有任何理由将它们嵌套。

另外,我刚刚注意到您正在尝试通过类引用实例变量。这无法奏效。 OUTER.out不存在,只有OUTER的实例具有out属性。 (OUTER.out的价值甚至是多少?)