在类方法中使用__builtin__函数的属性错误

时间:2011-03-27 16:22:45

标签: python linux namespaces built-in

我在我的arch linux机器上安装了rdiff-backup,但结果却出现了属性错误:

AttributeError: 'module' object has no attribute 'reduce'

rdiff_backup类之一存在错误,但我无法发现错误。函数reduce应该是内置的,我无法获取代码来查找函数。

rdiff的代码如下所示:

    def get_total_dest_size_change(self):
        """Return total destination size change

        This represents the total change in the size of the
        rdiff-backup destination directory.

        """
        addvals = [self.NewFileSize, self.ChangedSourceSize,
                           self.IncrementFileSize]
        subtractvals = [self.DeletedFileSize, self.ChangedMirrorSize]
        for val in addvals + subtractvals:
                if val is None:
                        result = None
                        break
        else:
                def addlist(l): return reduce(lambda x,y: x+y, l)
                result = addlist(addvals) - addlist(subtractvals)
        self.TotalDestinationSizeChange = result
        return result

错误发生在本地定义的addlist函数中。 我试图在文件顶部(statistics.py)导入内置模块,如

import __builtin__

from __builtin__ import reduce

并尝试更改方法的命名空间,如下所示:

def addlist(l): return __builtin__.reduce(lambda x,y: x+y, l)

但是唉。仍然是同样的错误。

到目前为止,我还没有找到任何好的信息或解决方案,所以也许对python有一点认识的人可能会捅它。

由于 米

1 个答案:

答案 0 :(得分:0)

reduce(lambda x,y: x+y, l)相当于sum(l)。你能试试sum(l)是否有效吗?另外,您使用的是哪个python版本(sum在版本> = 2.3)

中可用