Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError-使用getattr缺少必需的位置参数_Python_Python 3.x - Fatal编程技术网

Python TypeError-使用getattr缺少必需的位置参数

Python TypeError-使用getattr缺少必需的位置参数,python,python-3.x,Python,Python 3.x,我收到一个包含多个参数的字符串。当我将字符串单独传递给函数时,我就能够让它工作。我想看看是否有办法让下面的评论行正常工作 testc.py class TestClass(object): def test(k1, k2, k3, d1): print(k1,k2,k3) return 'done' 使用split() arglist = args.split(','); v = getattr(TestClass, 'test')(*arglist,

我收到一个包含多个参数的字符串。当我将字符串单独传递给函数时,我就能够让它工作。我想看看是否有办法让下面的评论行正常工作

testc.py
class TestClass(object):

    def test(k1, k2, k3, d1):
        print(k1,k2,k3)
        return 'done'
使用
split()

arglist = args.split(',');
v = getattr(TestClass, 'test')(*arglist, d)

首先,必须将字符串转换为列表:
args\u list=args.split(“,”)

然后,您必须使用
*
解包该列表,以将列表内容作为单独的参数传递(不包括
*
列表将作为单个参数传递)

输出:

args_list: ['earth', 'moon', 'mars']
earth moon mars
v: done

下面的答案将解决您的问题,但这里有一些其他注意事项:按照惯例,应该调用构造函数而不是使用
getattr
,函数
test
的第一个参数应该是
self
class TestClass(object):
    def test(k1, k2, k3, d1):
        print(k1,k2,k3)
        return 'done'

args = 'earth,moon,mars'
d = {'key':'value'}
args_list = args.split(",")
print("args_list:", args_list)
v = getattr(TestClass, 'test')(*args_list, d)
print("v:", v)
args_list: ['earth', 'moon', 'mars']
earth moon mars
v: done