嵌套 class 个变量 python

nested class variables python

我正在尝试将内部 class 中的变量分配给外部 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.  

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

你不能这样做。

OUTER 直到整个外部 class 声明完成后才被定义。 Class 正文是可执行代码;它们在定义时执行。当body被定义时,它被分配给name,但是直到那时name不存在。

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

另外,我刚刚注意到您正试图通过 class 引用实例变量。那永远行不通。 OUTER.out 不存在,只有 OUTER 的实例具有 out 属性。 (OUTER.out 的值是多少?)