测试对象自毁程序

"""
   测试对象自毁程序,只适合于全局变量。
   本程序会找到对象自己的名字,然后删除这个名字。
"""
import inspect


def retrieve_name(var):
    """
    得到变量的名字
    """
    for fi in reversed(inspect.stack()):
        names = [var_name for var_name, var_val in fi.frame.f_locals.items() if var_val is var]
        if len(names) > 0:
            return names[0]
            
def get_name_of_obj(obj, except_word = ""):
    """得到变量的名字"""
    for name, item in globals().items():
        if item == obj and name != except_word:
            return name

            
class Test:
    def __init__(self):
        pass

    def kill(self):
        d = retrieve_name(self)
        globals().pop(d)   # 从全局映射表中弹出这个变量,所以它就自毁了.



        
x = Test()
x.kill()
print(x)       # 打印时说明x名字没有定义,是则程序正确



关于李兴球

李兴球的博客是Python创意编程原创博客
此条目发表在python分类目录。将固定链接加入收藏夹。