2

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

4

0 に答える 0