测试对象自毁程序

"""
   测试对象自毁程序,只适合于全局变量。
   本程序会找到对象自己的名字,然后删除这个名字。
"""
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名字没有定义,是则程序正确



本站所有作品,教程等皆为原创,盗版必究。一旦付款,表示同意本站知识付费原则:数字商品,不支持退款。亦可直接向微信号scratch8付款购买。QQ群免费教学群:225792826 (提供真实姓名可入群)
李兴球的博客_Python创意编程技术前沿 » 测试对象自毁程序
scratch

学本领,探索更大的世界!

李兴球博客 风火轮编程主页