zoukankan      html  css  js  c++  java
  • 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'
    >>>
    
  • 相关阅读:
    关于virtual、非virtual继承函数的调用
    关于文件操作的文件格式与打开方式
    C++ 文件读写操作
    C++语法题
    检测java string变量是否含有中文
    常用知识库
    WMS仓储管理系统
    运输管理
    ipconfig/flushdns 清除系统DNS缓存
    cmd查看域名账号相关的命令
  • 原文地址:https://www.cnblogs.com/Vooom/p/5828056.html
Copyright © 2011-2022 走看看