0

我正在尝试执行以下操作:

import sys; sys.path.append('/var/www/python/includes')
import functionname

x = 'testarg'
fn = "functionname"
func = getattr(fn, fn)
func (x)

但我收到一个错误:

"TypeError: getattr(): attribute name must be string"

我在调用 getattr 之前尝试过这个,但它仍然不起作用:

str(fn)

我不明白为什么会这样,任何建议表示赞赏

4

2 回答 2

4

听起来你可能想要locals()而不是getattr()......

x = 'testarg'
fn = "functionname"
func = locals()[fn]
func (x)

当您有一个对象并且想要获取该对象的属性而不是本地命名空间中的变量时,您应该使用 getattr。

于 2010-08-18T21:23:20.270 回答
0

getattr 的第一个参数是具有您感兴趣的属性的对象。在这种情况下,我假设您正在尝试获取函数的属性。所以第一个参数应该是函数。不是包含函数名称的字符串,而是函数本身。

如果要为此使用字符串,则需要使用 locals()[fn] 之类的方法来查找具有该名称的实际函数对象。

其次,您将函数名称传递给 getattr 两次。该函数没有自身作为属性。你的意思是第二个参数是 x 吗?我想我真的不明白你在这里想要做什么。

于 2010-08-18T21:24:35.260 回答