我的项目有一个类,并希望其他一些方法能够接受它作为参数。我要做的是将数据(numpy.ndarray
对象)和一些关于数据的重要信息打包到一个对象中,因此我不必单独存储它们并在将来引起混淆。但是我也希望这个类尽可能地表现得像numpy.ndarray
。我覆盖了+, - 等运算符。但是对于运算符以外的函数(例如min()
,matplotlib.pylab.plot()
等),似乎没有一个好的方法。< / p>
我的课程是:
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'
我想让其他一些功能接受它。 E.g。
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__()
的{{1}}:
MyCls
适用于def __getitem__(self, k):
return self.data[k]
。我想这是因为在min()
中,它调用min()
并返回self.data中的每个元素。但它不适用于另一个不调用__getitem__()
的函数,例如__getitem__()
。
我想知道,对于pylab.plot()
的一般用途,它可能会使用x
,而不是x.data
本身吗?或者还有另一种做同样事情的好方法吗?