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'
    >>>
    
  • 相关阅读:
    shell加密为二进制可执行文件
    lua自写限制并发访问模块
    centos虚拟机中挂新硬盘
    lua文件修改为二进制文件
    常用一些命令方法
    常用问题处理方法
    CVE-2010-3333
    Kernel Stack Overflow(转)
    NULL Pointer Dereference(转)
    Linux内核漏洞利用-环境配置(转)
  • 原文地址:https://www.cnblogs.com/Vooom/p/5828056.html
Copyright © 2011-2022 走看看