您好我正在开发一个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工作。知道什么是错的吗?
答案 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])
无论何时调用类的方法,例如:
dog.bark()
你正在将自己(这是狗变量)传入
方法,因此内部调用是dog.bark(self)
。
规则是:
方法调用中的可见参数+ 1 =方法声明中的可见参数