Python 获取一个对象的名字

Posted Vooom

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 获取一个对象的名字相关的知识,希望对你有一定的参考价值。

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 获取一个对象的名字的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

python封装简介

C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段

如何从片段中的 JSON 响应中的对象获取数据

无法获取配置文件对象名字

Python如何获取调用函数(不仅仅是它的名字)?