2

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

getattr(self, that)(*args)

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

它是否使用 *args 作为参数来调用它?

编辑:谢谢大家!

4

4 回答 4

3

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

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

self.thatFunction(1, 2, 3)
于 2011-06-13T20:06:21.787 回答
3

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

于 2011-06-13T20:06:50.360 回答
2

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

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

self.f(1, 2, 3)
于 2011-06-13T20:06:06.173 回答
2

getattr()获取self由字符串变量命名的属性thatthat然后使用 iterable 给出的参数调用返回值,即由 命名的属性args

假设that有值"foo",以下四行是等价的:

self.foo(*args)

f = self.foo; f(*args)

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

getattr(self, that)(*args)

使用*argsas 参数与使用中的所有项目args作为单独的参数相同。

于 2011-06-13T20:06:08.077 回答