您的位置:首页 > 编程语言 > Python开发

在调用外部.py文件class内的函数出现takes exactly 1 argument (2 given)解决方案

2017-10-31 20:01 260 查看
被调用的文件test.py

class test:
def test_dummy(elem):
print elem


调用文件的call.py

from test import test

ts = test()
data = 'abc'
ts.test_dummy(data)


欸,这个时候就报错了,提示的问题十分诡异,因为我明明在test.py中定义的test_dummy是有一个参数的,我在这个call.py里面调用这个函数的时候,明明传入的是data,而且data是字符串,也就是一个参数,但是此时却报错

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


这就很神奇了,因为这里说2 given代表的是我在调用的时候传了两个参数,但是函数的定义里只有一个参数。函数定义了一个参数是没有问题的,但是为什么会说我传进去两个参数呢,明明只有data一个参数。

但是经过各种查找才发现(此处感谢http://blog.csdn.net/arthur503/article/details/21252701提供的指导),原来在调用外部的.py文件class内的函数的时候,调用处传进去的参数不仅仅是我自己提供的data,还传进去了这个class的一个实例self,也就是说,当我在调用处写

ts.test_dummy(data)


的时候,实际上应该是

ts.test_dummy(self,data)


但是在实际写的时候不能在调用处加入这个self,会报错,说self没有被定义,但是其运行效果就是如此,所以说,回到test.py,我们要重新定义test_dummy的参数,把它变为

class test:
def test_dummy(self,elem):
print elem


然后再次执行call.py的时候,运行成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python学习