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