こんにちは、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 関数を実装する理由と方法を説明できますか?
乾杯、デビッド