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