Python 在类方法内使用_内置函数时出现属性错误
我在我的arch linux设备上安装了rdiff备份,结果出现属性错误: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
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)