首页 > 编程语言 > 详细

Python 获取一个对象的名字

时间:2016-09-01 02:04:02      阅读:284      评论:0      收藏:0      [点我收藏+]

Note: 这里的对象是广义的,一个列表也算

name的不在讨论之列, 因为可以直接输出

没有name的,可以参考如下代码,使用到的是globals()

except_word是用于过滤掉那些不想要的结果的,比如下面的例子中的for循环的each_item

这种 for循环干扰的情况有的时候会出现,有时候不会,具体的我现在还不清楚,但是似乎和namespace的排序有关。

>>> def get_name_of_obj(obj, except_word = ""):
... for name, item in globals().items():
... if item == obj and name != except_word:
... return name
...
>>> objA = [1, 2, 3]
>>> objB = (‘a‘, {‘b‘:‘thi is B‘}, ‘c‘)
>>> for each_item in [objA, objB]:
... get_name_of_obj(each_item)
...
‘objA‘
‘objB‘
>>>
>>>
>>> objC = [{‘a1‘:‘a2‘}]
>>>
>>> for item in [objA, objB, objC]:
... get_name_of_obj(item)
...
‘objA‘
‘item‘    <<<<<<<<<<<<<<<<<<<--------------------这显然不是我们想要的
‘item‘
>>> for item in [objA, objB]:
... get_name_of_obj(item)
...
‘objA‘
‘item‘
>>>
>>> for item in [objA, objB, objC]:
... get_name_of_obj(item, "item")
...
‘objA‘
‘objB‘<<<<<<<<<<<<<<<<<<<<------------------------ 加了except_word就好了
‘objC‘
>>> for item in [objA, objB, objC]:
... get_name_of_obj(item, "item")
...
‘objA‘
‘objB‘
‘objC‘
>>>
?

Python 获取一个对象的名字

原文:http://www.cnblogs.com/Vooom/p/5828056.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!