Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:检测重新定义?_Python_Reflection - Fatal编程技术网

Python:检测重新定义?

Python:检测重新定义?,python,reflection,Python,Reflection,我正在寻找一种方法,以某种方式检测python函数或类是否正在被重新定义,甚至仅当它被定义了两次并且一个定义删除了另一个定义时。 这可以通过反射来实现吗? 可能是函数(或类)本身造成的?对类的重新定义对原始类没有任何影响,它只是将一个全新的类分配给相同的名称。检查很容易–只需保存原始文件,然后查看名称是否仍然引用它 class SomeClass(object): x = 1 # Save the original _my_saved_class = SomeClass class

我正在寻找一种方法,以某种方式检测python函数或类是否正在被重新定义,甚至仅当它被定义了两次并且一个定义删除了另一个定义时。
这可以通过反射来实现吗?

可能是函数(或类)本身造成的?

对类的重新定义对原始类没有任何影响,它只是将一个全新的类分配给相同的名称。检查很容易–只需保存原始文件,然后查看名称是否仍然引用它

class SomeClass(object):
    x = 1

# Save the original
_my_saved_class = SomeClass

class SomeClass(object):
    x = 2

# Check if they're the same!
if SomeClass is not _my_saved_class:
    print "SomeClass was redefined!"

有没有办法在使用某个类时进行检查,而不必更改使用该类的代码?或者,当变量被覆盖时,有什么方法可以得到通知?不太可能,除非您使用
globals
执行代码,该代码将跟踪此情况。您真正想解决的问题是什么?为什么您想知道函数是否被重新定义?简而言之,我正在加密python文件,不想覆盖函数以包含print语句来显示文件的内容。但我有另一种方法,我主要感兴趣。在这种情况下,检测/防止重新定义并不能真正节省您的时间–例如,您可以通过替换函数的
\uuuuu code\uuuuu
来更改函数的功能。