Python 在类方法内使用_内置函数时出现属性错误

Python 在类方法内使用_内置函数时出现属性错误,python,linux,namespaces,built-in,Python,Linux,Namespaces,Built In,我在我的arch linux设备上安装了rdiff备份,结果出现属性错误: AttributeError: 'module' object has no attribute 'reduce' 该错误存在于一个rdiff_备份类中,但我无法发现该错误。应该内置函数reduce,我无法获取代码来查找函数 rdiff中的代码如下所示: def get_total_dest_size_change(self): """Return total destination size

我在我的arch linux设备上安装了rdiff备份,结果出现属性错误:

AttributeError: 'module' object has no attribute 'reduce'
该错误存在于一个rdiff_备份类中,但我无法发现该错误。应该内置函数
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__

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

def addlist(l): return __builtin__.reduce(lambda x,y: x+y, l)
但是,唉。还是一样的错误

到目前为止,我还没有找到任何好的信息或解决方案,所以也许有人对python有更深入的了解,可以尝试一下

谢谢
m

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

实际上似乎解决了这个问题。我认为它能够调用
sum
,但不能调用
reduce
,这非常奇怪,也有点麻烦。你知道为什么吗?我使用Python2.7。谢谢这只是我脑海中闪现的一个简单的想法:)。我不知道是什么原因导致了
reduce
的问题,它看起来不在当前的名称空间中……但是,即使用另一个
reduce
声明来隐藏它,也会产生不同的错误。也许你应该向rdiff备份人员提交一个bug。
def addlist(l): return __builtin__.reduce(lambda x,y: x+y, l)