【发布时间】:2014-12-19 16:32:17
【问题描述】:
我正在创建一个继承自 NumPy ndarray 的类。我在给它方法时遇到了一些麻烦。具体来说,当我在类中添加一个简单的方法printout 时,会出现以下错误:
AttributeError: 'NoneType' object has no attribute 'printout'
我应该如何向这个类添加方法?另外,有没有推荐的方法在这个类内部更改self 的值?
import numpy
class Variable(numpy.ndarray):
def __new__(
cls,
name = "trk_pt",
tree = None, # tree object
eventNumber = None,
eventWeight = None,
numberOfBins = None, # binning
binningLogicSystem = None, # binning
):
self = numpy.asarray([]).view(cls)
# arguments
self._name = name
self.tree = tree
self.eventNumber = eventNumber
self.eventWeight = eventWeight
self.numberOfBins = numberOfBins
self.binningLogicSystem = binningLogicSystem
# internal
self.variableObject = None
self.variableType = None
self.dataType = None
self.variableDataTypes = None
self.canvas = None
self.histogram = None
self._values = [] # list of values
self._valuesRaw = [] # list of unmodified, raw values
def printout(
self
):
print("hello world")
a = Variable()
a.printout()
【问题讨论】:
-
.view不返回任何内容 -
如果你使用
__new__,你必须返回你的类的新创建的实例。
标签: python class inheritance numpy methods