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'
    >>>
    
  • 相关阅读:
    Tomcat虚拟主机配置
    JSP执行过程
    JDK环境变量配置贺Tomcat环境搭建
    有限域上的运算
    希尔密码(Hill Cipher)的实现
    高精度运算
    统计文本中的单词数的简单脚本
    soj1166. Computer Transformat(dp + 大数相加)
    [转].Python中sorted函数的用法
    soj1564. HOUSING
  • 原文地址:https://www.cnblogs.com/Vooom/p/5828056.html
Copyright © 2011-2022 走看看