我得到以下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和HOW / WHY?这与事件有关吗? 最佳答案
在Python中,调用方法的对象始终明确地作为参数传递。该参数通常称为self
。readSaved()
作为实例方法的正确定义应以第一行为准:
def readSaved(self):
# ...
如果希望它成为模块级函数,则应按以下方式调用它:
s = readSaved()
关于python - 奇怪的额外论点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9685195/