有没有办法在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
而不需要写两次函数的名字,因为这看起来是一个创建bug的好方法。我想做的是:
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
这样我只需要写一次函数名。
如果要获取解释器中定义的函数、lambda或其他类似函数的对象的名称,可以使用^{} 中的
dill.source.getname
。它几乎在寻找__name__
方法,但在某些情况下,它知道如何找到名称的其他魔力。。。或对象的名称。我不想讨论如何为python对象找到一个真正的名字。对象在python中不一定有名称,因此无法获取名称。 在这些情况下,对象有一个
__name__
属性并不罕见,但这不是标准python的一部分,而且大多数内置类型没有名称。当您创建一个变量时,比如上面的x,y,z,这些名称只是作为对象的“指针”或“引用”。对象本身不知道您要为它使用什么名称,并且您不容易(如果有的话)获得对该对象的所有引用的名称。
更新:但是,函数确实有一个
__name__
(除非它们是lambdas),因此,在这种情况下,您可以:这是不可能的,因为可能有多个变量具有相同的值,或者一个值可能没有变量,或者一个值可能与一个变量具有相同的值只是偶然的。
如果你真的想这么做,你可以用
但是,如果您首先遍历名称,则会更好:
相关问题 更多 >
编程相关推荐