1
我在我的Arch Linux箱安装rdiff进行备份里面__builtin__功能只与属性错误落得:属性错误使用类方法
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有一些更严格的认识可能会刺伤它。
由于 米
这实际上似乎解决了这个问题。我认为它很奇怪,有点麻烦,它可以称为“sum”而不是“reduce”。你知道为什么吗?我使用python 2.7。谢谢! – Max 2011-03-27 16:36:21
这只是一个快速入门而已:)。我不知道是什么原因导致了reduce的问题,看起来它不在当前的名称空间中......但是,即使用另一个“reduce”声明遮蔽它也会给出不同的错误。也许你应该向rdiff备份的人员提交一个bug。 – pajton 2011-03-27 16:39:36
是的。那么谢谢你的修复:) – Max 2011-03-27 16:49:51