あなたの最善の策は、おそらく 2.4 に固執し、後の Python が必要とするすべての機能を備えた time_machine モジュールを用意することです。たとえば、プロパティが最初に登場したとき、次のようなことをしなければなりませんでした:
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 の同等物がよく使用されるため、自分でコードを記述する必要さえないことです。