无法将python列表条目传递给函数

时间:2013-06-28 01:13:34

标签: python list function typeerror

您好我正在开发一个python程序。我能够从我的类的函数中检索数据,但无法向它们发送数据。

    class someClass:
        someList = []
        def sendMessage(message):
            someList.append(message)

    messageSender = someClass()

    listToSend = [] #loaded elswhere 

    someClass.sendMessage(listToSend[1])

当我继续运行它时,我收到此错误:

     TypeError: sendMessage() takes exactly 1 argument (2 given)

如果我只使用someClass.someList = listToSend它可以工作,但这是针对更大程序的单元测试,所以我真的需要让sendMessage工作。知道什么是错的吗?

2 个答案:

答案 0 :(得分:3)

在所有类方法中,您应该使用其他参数后跟方法self的第一个参数:

class someClass:
    someList = []
    def sendMessage(self, message):
        someList.append(message)

messageSender = someClass()

listToSend = [] #loaded elswhere 

someClass.sendMessage(listToSend[1])

答案 1 :(得分:1)

你忘记了sendMessage函数声明中的self参数 sendMessage(message)应该是sendMessage(self, message)

class someClass:         someList = []         def sendMessage(self,message):             someList.append(消息)

messageSender = someClass()

listToSend = [] #loaded elswhere 

someClass.sendMessage(listToSend[1])

为什么告诉我我传了2个参数?

无论何时调用类的方法,例如:

dog.bark()

你正在将自己(这是狗变量)传入 方法,因此内部调用是dog.bark(self)

规则是:
方法调用中的可见参数+ 1 =方法声明中的可见参数