私は自分のプロジェクトのクラスを持っていて、他のメソッドがそれをパラメーターとして受け入れることができるようにしたいと考えています。私がやろうとしているのは、データ (numpy.ndarrayオブジェクト) とデータに関するいくつかの重要な情報を 1 つのオブジェクトにパックすることです。そのため、それらを別々に保存する必要がなく、将来混乱を招く可能性があります。ただし、このクラスnumpy.ndarrayは可能な限り のように動作することも望んでいます。+、- などの演算子を上書きしました。しかし、演算子以外の関数 (たとえば、、、min()などmatplotlib.pylab.plot()) については、そうする良い方法がないようです。
私のクラスは:
import numpy
class MyCls(object):
def __init__(self):
# Pack data and info into one place
self.data = numpy.ones((10, 10))
self.info = 'some info on the data'
他のいくつかの機能で受け入れられるようにしたいと思います。例えば
mycls = MyCls()
x = min(mycls) # I was hoping this could return min(mycls.data)
また
from matplotlib import pylab
pylab.plot(x) # I was hoping this could plot x.data
をオーバーライドしようとしまし__getitem__() たMyCls:
def __getitem__(self, k):
return self.data[k]
それはのために働くmin()。min()inを呼び出し__getitem__()て、self.data の各要素が返されるためだと思います。__getitem__()しかし、 のようにを呼び出さない別の関数では機能しませんpylab.plot()。
の一般的な使用のために、それ自体の代わりに をx使用する可能性はありますか? または、同じことを行う別の良い方法はありますか?x.datax