【发布时间】:2010-12-05 00:45:52
【问题描述】:
有没有办法在 Python 中获取对象的名称?例如:
my_list = [x, y, z] # x, y, z have been previously defined
for bla in my_list:
print "handling object ", name(bla) # <--- what would go instead of `name`?
# do something to bla
编辑:一些上下文:
我实际上在做的是创建一个我可以通过命令行指定的函数列表。
我有:
def fun1:
pass
def fun2
pass
def fun3:
pass
fun_dict = {'fun1': fun1,
'fun2': fun2,
'fun3': fun3}
我从命令行获取函数的名称,我想调用相关的函数:
func_name = parse_commandline()
fun_dict[func_name]()
我想要函数名称的原因是因为我想创建 fun_dict 而不写两次函数名称,因为这似乎是创建错误的好方法。我想做的是:
fun_list = [fun1, fun2, fun3] # and I'll add more as the need arises
fun_dict = {}
[fun_dict[name(t) = t for t in fun_list] # <-- this is where I need the name function
这样我只需要写一次函数名。
【问题讨论】:
-
在这种情况下该函数应该返回什么?
-
像往常一样,我会请您告诉我们您要解决的问题是什么。
-
@Lennart,这样更好吗?
-
是的。因为函数确实有
__name__属性。
标签: python introspection