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