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

1 投票
4 回答
935 浏览
提问于 2025-04-16 19:29

我看到了一段Python代码,像这样:getattr(self, that)(*args)。这是什么意思呢?我知道内置的getattr函数会被调用,它接收当前对象和that作为参数;但是后面的(*args)又是在干嘛呢?它是用*args作为参数去调用某个东西吗?

4 个回答

2

这段话的意思是,它会调用一个方法,这个方法的名字保存在that里,并且把*args作为参数传递给这个方法。这里的args是一个元组,而*args是一种特殊的写法,可以让你在调用函数时,把元组里的内容展开成一系列参数。

假设that里面的内容是字符串'f',而args(1,2,3),那么getattr(self, that)(*args)就相当于:

self.f(1, 2, 3)
3

这段话的意思是,它会用数组 args 中指定的参数来调用 getattr(self, that) 返回的值。

举个例子,假设 that = 'thatFunction',而 args = [1,2,3],这就等同于

self.thatFunction(1, 2, 3)
3

你说得对。that 是对象上的一个方法的名字。getattr() 是在获取这个方法(函数),然后再调用它。因为函数是“第一类成员”,所以它们可以被传递、返回等等。

撰写回答