2

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

4

0 回答 0