1
來自h5py的HDF數據集實現了numpy數組的功能的一個子集,但其優點是隻有您實際訪問的數據纔會被讀入內存。因此,我希望儘可能使用數據集,並且只在需要某些功能時纔將它們轉換爲數組。爲此,我試圖定義一個包裝類,它最初包含一個數據集並將所有內容都轉發給它,但是當發生這種情況時會捕獲名稱錯誤並將其轉換爲數組。我目前的實現是:在python中轉發屬性查找
class DArr:
def __init__(self, dset):
self.arr = dset
def __getitem__(self, args):
try:
return self.arr.__getitem__(args)
except:
self.arr = np.array(self.arr)
return self.arr.__getitem__(args)
def __getattr__(self, name):
try:
return self.arr.__getattr__(name)
except:
self.arr = np.array(self.arr)
return self.arr.__getattr__(name)
然而,這種失敗時self.arr
已成爲numpy.array
,因爲這些顯然不具有__getattr__
我可以期待。做這種轉發的正確方法是什麼?從用戶的角度來看,DArr
的目標應該與numpy.array
一樣。
謝謝,這是我需要的:) – amaurea