我得到了以下 python 代码,其中 printSaved 在单击按钮时被调用(使用 wx 库和 python 2.7.2)。但是当这种情况发生时,我得到了一个非常奇怪的错误
Traceback (most recent call last):
File "./program.py", line 135, in printSaved
s = self.readSaved()
TypeError: readSaved() takes no arguments (1 given)
这是代码
def readSaved():
f = codecs.open((os.getenv('HOME') +'/Dokument/savefile.txt') ,'r','utf-8')
l = f.readlines()
f.close()
return l
def printSaved(self,event):
s = self.readSaved()
for l in s:
print l
我通过向 readSaved(somethingUseless) 添加一个参数解决了这个问题,一切正常。我的问题是传递给 readSaved 的是什么以及如何/为什么?这跟事件有关系吗?
请您参考如下方法:
在 Python 中,调用方法的对象总是作为参数显式传入。这个参数通常称为 self。
作为实例方法的 readSaved() 的正确定义应该是第一行:
def readSaved(self):
# ...
如果你想让它成为一个模块级的函数,你应该这样调用它:
s = readSaved()
