python函数中的截获局部赋值

2024-05-16 17:56:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在用Python拦截全局赋值:

class MyDict(dict): 
    def __setitem__(self, k, v):
        print "intercepted assignment to ", k
        super(MyDict, self).__setitem__(self, k, v)

nsG = MyDict()
exec('a=10', nsG)

这将打印“截获的分配给a”。酷!但是,这在函数中不起作用:

^{pr2}$

在这里,对a的赋值不会被截获(因为默认情况下,函数内的赋值是该函数的局部赋值:af的局部赋值,因此nsG不涉及;如果我取消了global a语句在{}中的注释,那么赋值就会被截获,正如人们所期望的那样)。在

有没有一种方法可以截取函数中的局部赋值?在


Tags: to函数selfdef局部全局dictmydict