我的项目有一个类,并且希望其他一些方法能够接受它作为参数。我正在尝试做的是将数据(numpy.ndarray对象)和数据的一些重要信息打包到一个对象中,这样我就不必将它们单独存储并在将来造成可能的混乱。但是我也希望这个类尽可能地表现得像一个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(). 我想这是因为 in min(),它调用__getitem__()并返回 self.data 中的每个元素。但它不适用于另一个不调用的函数__getitem__(),例如pylab.plot().
我想知道是否有可能对于 的一般用途x,它会使用x.data,而不是x它本身?还是有另一种好方法来做同样的事情?