我在python中遇到过这段代码,
getattr(self, that)(*args)
这是什么意思?我看到getattr内部函数被调用,传递当前对象和那个参数,但是(* args)之后做了什么?
是否将* args作为参数调用?
编辑:全部谢谢!
答案 0 :(得分:3)
它使用数组getattr(self, that)
中指定的参数调用args
返回的值。
例如,假设that = 'thatFunction'
和args = [1,2,3]
,它与
self.thatFunction(1, 2, 3)
答案 1 :(得分:3)
你是正确的。 that
将成为对象上方法的名称。 getattr()
正在返回该方法(函数),然后调用它。因为函数是一等成员,所以它们可以传递,返回等等。
答案 2 :(得分:2)
它调用self的方法,其名称保存在that
中,并传递*args
作为函数的参数。 args
是一个元组,*args
是一种特殊语法,允许您调用函数并将元组扩展为参数列表。
假设that
包含字符串'f'
,而args
包含(1,2,3)
,则getattr(self, that)(*args)
相当于:
self.f(1, 2, 3)
答案 3 :(得分:2)
getattr()
获取由字符串变量self
命名的that
属性。然后使用可迭代that
给出的参数调用返回值,即由args
命名的属性。
假设that
的值为"foo"
,则以下四行是等效的:
self.foo(*args)
f = self.foo; f(*args)
f = getattr(self, that); f(*args)
getattr(self, that)(*args)
使用*args
作为参数与使用args
中的所有项目作为特殊参数相同。