嵌套 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
的值是多少?)
我正在尝试将内部 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
的值是多少?)