我得到以下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/

10-12 18:31