在我的项目中,我必须坚持使用 Python 2.5(Google App Engine)。在应用程序的某个地方(实际上是一个框架),我必须跟踪定义了哪些变量以及定义它们的顺序,换句话说,我想在处理赋值运算符时进行拦截。
使用 Python 3,我将定义一个元类 M,其__prepare__
方法返回一个智能字典,该字典跟踪它何时被访问。然后我只需要使用元类 M 执行类语句中的所有内容。
有没有办法在 Python 2.5 中模拟这个?
我想实现的示例
使用 Python 3 的元类方法,我可以实现像引用一样工作的变量,例如 M 可以这样
# y is a callable
class C(metaclass=M):
x = ref(y)
x = 1
将与 等价(直到创建 C)y(1)
,即黑盒ref
函数对 C 字典中变量的第一次赋值会创建此变量。进一步的赋值只是调用 ref 函数的参数。