【发布时间】:2012-05-22 09:58:06
【问题描述】:
我在函数中传递方法时遇到问题。我已经看过之前的这篇文章了。
How do I pass a method as a parameter in Python
这是我尝试过的一个简单示例。
def passMethod(obj, method):
return obj.method()
passMethod('Hi', lower)
最后我将使用它来帮助编写一个处理 GIS(地理信息系统)数据的函数。数据就像一个数组。我想在数组中添加一个新列 NAME1。然后数组就有了调用列array.NAME1的方法。
问候, 亚历克斯
【问题讨论】:
-
你熟悉
map吗?也许还有一点__iter__? -
我不知道你为什么要以这种方式传递一个方法(尽管有合法的用例,你为什么想要这样的一些上下文会很好)。如果你不熟悉 python,你可能没有意识到你可以绕过
'Hi'.lower。这将为您提供一个返回'hi'的可调用对象。 -
@Darthfett 我试图在最后一段中提供一些上下文;但在抽象中很难理解。基本上,我有一个对象,它具有与数据集中变量名称相关的方法。我想编写一个函数,允许用户选择变量,从而选择所需的方法。因此,我无法将该方法硬编码到我的函数中;例如,使用 'Hi'.lower 是不够的,因为有时变量可能被称为 upper,甚至是 foo。
-
@AlexOlssen 我仍然有点不确定您到底需要什么。如果使用
getattr无法满足您的所有需求,则操作员模块提供的 attrgetter 函数可能对您的场景很有用。
标签: python