我正在启动一个新的python项目,主要针对可能在几年内升级到RHEL6的RHEL5机器。鉴于Python2.4是RHEL5上的标准,系统管理员不会支持超过他们必须支持的内容,在我们的本地代码库中获取Python2.6将需要一些说服力。虽然看起来我可以很好地使用python2.4,但我对从头开始创建一个旨在100%兼容这样一个旧版本的项目持怀疑态度。
我应该争取在2.6版本中完成这个项目,还是应该以最顺畅地遵循RHEL5为目标?如果我坚持使用2.4,我应该意识到哪些陷阱?
仅供参考:我肯定会使用sqlite和pygtk。
发布于 2011-10-08 15:05:51
你最好的选择可能是坚持使用2.4,并拥有一个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的等价物通常用于演示新功能,因此您甚至不必自己编写代码。
发布于 2011-10-08 08:37:28
What's in Which Python?
发布于 2011-10-08 08:36:16
2.5,2.6,2.7的新特性。此外,添加某些功能时的标准库文档。例如,string formatting was added in 2.6。不过,第三方库的支持可能不太可靠。
https://stackoverflow.com/questions/7694006
复制相似问题