Skip to main content
 首页 » 编程设计

python之奇怪的额外参数

2025年05月04日18mengfanrong

我得到了以下 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()