h5pyのHDFデータセットは、numpy配列の機能のサブセットを実装しますが、実際にアクセスするデータのみがメモリに読み込まれるという利点があります。したがって、可能な限りデータセットを操作し、不足している機能が必要な場合にのみデータセットを配列に変換したいと考えています。そのために、最初にデータセットを含み、すべてをそれに転送するラッパークラスを定義しようとしましたが、これが発生すると、名前エラーをキャッチし、そのデータセットを配列に変換します。私の現在の実装は次のとおりです。
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なっている場合は失敗します。これは、転送できるIがnumpy.arrayないように見える__getattr__ためです。この種の転送を行う正しい方法は何ですか?目標は、ユーザーの観点からは、DArrがと同じように動作することです。numpy.array