如何得到变量的名字?

0 Comments

"""
   如何得到变量的名字? 看似很简单的问题其实很难。
   这里提供了一种参考方法。
"""
class TestClass:
    def __init__(self):        
        self.hashcode = id(self)
        self.delete_self_name()
        
    def delete_self_name(self):
       
        weizhi = [k for k, v in globals().items()
                        if hasattr(v,'hashcode') and
                        v.hashcode == self.hashcode]
        if weizhi==[]:                
            weizhi = [k for k, v in locals().items()
                        if hasattr(v,'hashcode') and
                        v.hashcode == self.hashcode]
        name = weizhi[0]
        if name in globals():           
            globals().pop(name)
        elif name in locals():
            locals().pop(name)
        
    def __del__(self):
        print("调用__del__() 销毁对象,释放其空间")
        
ttt = TestClass()
print(ttt.delete_self_name())
print(ttt)                # 对象已经被删除了。


发表评论