这个(简单的?)表达式在Python中是什么意思?func(self)(*args)

这个(简单的?)表达式在Python中是什么意思?func(self)(*args),python,getattr,Python,Getattr,我在python中遇到了这段代码 getattr(self, that)(*args) 这是什么意思?我看到getattr内置函数被调用,传递当前对象和参数,但是(*args)在这之后做什么呢 它用*args作为参数调用它吗 编辑:谢谢大家它调用self的方法,该方法的名称保存在中,并将*args作为参数传递给函数args是一个元组,*args是一种特殊语法,允许您调用函数并将元组扩展为参数列表 假设包含字符串'f',并且args是(1,2,3),那么getattr(self,that)(*a

我在python中遇到了这段代码

getattr(self, that)(*args)
这是什么意思?我看到getattr内置函数被调用,传递当前对象和参数,但是(*args)在这之后做什么呢

它用*args作为参数调用它吗


编辑:谢谢大家

它调用self的方法,该方法的名称保存在
中,并将
*args
作为参数传递给函数
args
是一个元组,
*args
是一种特殊语法,允许您调用函数并将元组扩展为参数列表

假设
包含字符串
'f'
,并且
args
(1,2,3)
,那么
getattr(self,that)(*args)
将等价于:

self.f(1, 2, 3)
getattr()
获取由字符串变量
命名的
self
的属性。返回值,即
命名的属性,然后使用iterable
参数
调用

假设
具有值
“foo”
,则以下四行是等效的:

self.foo(*args)

f = self.foo; f(*args)

f = getattr(self, that); f(*args)

getattr(self, that)(*args)

使用
*args
作为参数与使用
args
中的所有项作为sperate参数相同。

它使用数组
args
中指定的参数调用
getattr(self,that)
返回的值

例如,假设
that='thatFunction'
args=[1,2,3]
,它与

self.thatFunction(1, 2, 3)

你走上正轨了
将成为对象上方法的名称
getattr()
返回该方法(函数),然后调用它。因为函数是第一类成员,所以它们可以被传递、返回等