我的项目有一个类,并且希望其他一些方法能够接受它作为参数。我正在尝试做的是将数据(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
它本身?还是有另一种好方法来做同样的事情?