Python 2 - 为导入的对象添加方法

时间:2015-09-16 11:58:54

标签: python override python-2.6

使用尚未实现List<SubObjects>的Python 2.6,如何在依赖它的现有程序中反向移植此函数?

函数的代码基本上可以简化为一行,我尝试在我的程序的顶部将这样的lambda函数放入Logger类中:

logging.Logger.getChild(name)

但Travis-CI仍然告诉我它没有像许多错误一样工作:

import sys, logging
if sys.version_info <= (2, 6):
    logging.Logger.getChild = lambda self, suffix:\
        self.manager.getLogger('.'.join((self.name, suffix)) if self.root is not self else suffix)

全局变量self.logger = logger.getChild('Browser') E AttributeError: Logger instance has no attribute 'getChild' 在此之前初始化为:

logger

我的错误是什么?如何在不遗漏logger = logging.getLogger(__name__) 函数的情况下调整代码以支持Python 2.6?

1 个答案:

答案 0 :(得分:2)

如果sys.version_info返回(如我的测试中)一个包含2个以上元素的元组,则您的版本检查将失败:

>>> sys.version_info
(2, 6, 6, 'final', 0)
>>> sys.version_info <= (2, 6)
False

导致您的后端口永远不会被定义。一个解决方法是将比较限制为前两个元素:

if sys.version_info[:2] <= (2, 6):
    ...