5

こんにちは、ndarray からクラスを派生させようとしています。ドキュメントにあるレシピに固執していますが、関数をオーバーライドすると、理解できないエラーが発生します__getiem__()。これが機能するはずの方法だと確信していますが、正しく行う方法がわかりません。基本的に「dshape」プロパティを追加する私のクラスは次のようになります。

class Darray(np.ndarray):
    def __new__(cls, input_array, dshape, *args, **kwargs):
        obj = np.asarray(input_array).view(cls)
        obj.SelObj = SelObj
        obj.dshape = dshape
        return obj

    def __array_finalize__(self, obj):
        if obj is None: return
        self.info = getattr(obj, 'dshape', 'N')  

    def __getitem__(self, index):        
        return self[index]

私が今やろうとすると:

D = Darray( ones((10,10)), ("T","N"))

インタプリタは何度も何度も呼び出すため、最大深度の再帰で失敗し__getitem__ます。

誰かが getitem 関数を実装する理由と方法を説明できますか?

乾杯、デビッド

4

3 に答える 3