Python中这个(简单的?)表达式func(self)(*args)是什么意思?
我看到了一段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()
是在获取这个方法(函数),然后再调用它。因为函数是“第一类成员”,所以它们可以被传递、返回等等。