【发布时间】:2014-10-12 20:56:50
【问题描述】:
我有一个变量更新的小问题。
我的变量在我的第一个函数中声明为 self.TestVar = 0 那么如果某个计数 ==2 self.TestVar = 2
在第二个函数中(在同一个类中),但从另一个类中调用,我想返回 self.TestVar。没办法。
AttributeError: 'ThndClass' object has no attribute 'TestVar'
我肯定不是在做好方法,我想要的只是从我的其他类访问 self.TestVar = 2 就是这样,但我在 Python 中找不到合适的方法。 看起来我的问题是我在“if”语句中得到了 self.TestVar = 2,这使它存在于另一个范围内(或者我可能错了)。
import sys
from PIL import Image
from PyQt4 import QtCore, QtGui
class MainWindow(QtGui.QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.initUI()
def initUI(self):
self.TestVar = 0
self.TheCount = 2
if self.TheCount ==2:
self.TestVar = 2
ThndClass()
def Getit(self):
print("called correctly")
print(self.TestVar)
return self.TestVar
def main():
app = QtGui.QApplication([])
mw = MainWindow()
sys.exit(app.exec_())
class ThndClass(QtGui.QWidget):
def __init__(self):
super(ThndClass, self).__init__()
self.initUI2()
def initUI2(self):
print("Class Called")
print(MainWindow.Getit(self))
if __name__ == '__main__':
main()
如果我删除 2nd Class 呼叫:
import sys
from PIL import Image
from PyQt4 import QtCore, QtGui
class MainWindow(QtGui.QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.initUI()
def initUI(self):
self.TestVar = 0
self.TheCount = 2
if self.TheCount ==2:
self.TestVar = 2
self.Getit()
def Getit(self):
print("called correctly")
print(self.TestVar)
return self.TestVar
def main():
app = QtGui.QApplication([])
mw = MainWindow()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
这可以正常工作,但我希望能够从另一个类调用 def Getit() 并获得我的结果。或者干脆从我的其他班级直接访问 self.TestVar。
【问题讨论】:
-
其实这是我实际代码的最小示例。
标签: function class variables python-3.x scope