私は自分のプロジェクトのクラスを持っていて、他のメソッドがそれをパラメーターとして受け入れることができるようにしたいと考えています。私がやろうとしているのは、データ (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.data
x