您最好的选择可能是坚持使用 2.4,并拥有一个 time_machine 模块,其中包含您想要的后来 python 拥有的所有好东西。例如,当属性首次出现时,您必须执行以下操作:
def _get_prop(self):
return self._prop
def _set_prop(self, value):
self._prop = value
prop = property(_get_prop, _set_prop)
但在 2.6 中,它们将属性增强为本身也是装饰器,因此您可以编写:
@property
def prop(self):
return self._prop
@prop.setter
def prop(self, value):
self._prop = value
这意味着更少的冗余函数挂在你的类的命名空间中。
我碰巧很喜欢这个功能,所以我的 time_machine.py 的代码类似于:
# 2.6+ property for 2.5-
if sys.version_info[:2] < (2, 6):
# define our own property type
class property():
"2.6 properties for 2.5-"
def __init__(self, fget=None, fset=None, fdel=None, doc=None): ...
def __call__(self, func): ...
def __get__(self, obj, objtype=None): ...
def __set__(self, obj, value): ...
def __delete__(self, obj): ...
def setter(self, func): ...
def deleter(self, func): ...
真正好的部分是 python 等效项通常用于演示新功能,因此您甚至不必自己编写代码。