Python说我的函数没有参数

时间:2015-02-22 21:52:30

标签: python

我有一个按下按钮时调用的函数:

def generate_noise():
    var = self.add_snr_textbox.get()
    controller.generate_noise(var)

这对应于我的控制器类中的函数:

def generate_noise(self, snr):
        print snr

然而,当我尝试运行它时,我收到错误TypeError: generate_noise() takes no arguments (1 given)。为什么会这样?

更多详情

main.py

from Tkinter import *
import ttk
import tkFileDialog
import controller

root = Tk()
content = ttk.Frame(root)
controller = controller.Controller()


class Main(Frame):

...

def generate_noise():
        var = self.add_snr_textbox.get()
        controller.generate_noise(var)

controller.py

class Controller():
    def generate_noise(self, snr):
            print snr

1 个答案:

答案 0 :(得分:0)

您提供的第一个Main.generate_noise()函数定义(没有参数的函数)引用self变量。但是,由于您没有想要引用的全局self,因此您无法为Main.generate_noise()函数提供访问self的方法。您需要将self作为参数添加到Main.generate_noise签名中,以便Main.generate_noise可以使用

访问Main的实例
def generate_noise(self):

而不是

def generate_noise():

您收到的错误表明您已经在代码中的其他位置调用此函数作为实例方法,因此此更改应修复TypeError和您尝试使用时遇到的错误self如果您以另一种方式解决了这个问题。

编辑:根据提供的其他信息,我已经澄清了这篇文章中使用的名称。