Python中的这个(简单?)表达式是什么意思? FUNC(个体经营)(*参数)

时间:2011-06-13 20:03:45

标签: python getattr

我在python中遇到过这段代码,

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

是否将* args作为参数调用?

编辑:全部谢谢!

4 个答案:

答案 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中的所有项目作为特殊参数相同。