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'
    >>>
    
  • 相关阅读:
    C++ 中的深入浅拷贝和深拷贝
    C++ 引用小问题
    6-10
    6-8
    6-7
    6-4
    6-3
    6-1
    5-31
    COMException 依赖服务或组无法启动(0x8007042C)处理办法
  • 原文地址:https://www.cnblogs.com/Vooom/p/5828056.html
Copyright © 2011-2022 走看看