我试图使用不同的构造函数参数从numpy.recarray
派生一个类:
import numpy as np
class Table(np.recarray):
def __init__(self,
silly_arg = ['nope']):
print "Table.__init__"
super(Table, self).__init__(shape = 10, dtype = [('r', np.float64), ('v', np.float64)])
t = Table()
但是,它不遵守我的print
指令,而是出错:
$ python test.py
Traceback (most recent call last):
File "test.py", line 10, in <module>
t = Table()
TypeError: __new__() takes at least 2 arguments (1 given)
我认为这是因为除了__new__
之外,recarray还有__init__
方法,并且在构造实际发生之前调用new来分配它。
请注意,我使用的是Python 2.7。
我该如何正确地做到这一点?传递给重新分组的分配的参数取决于构造期间传递给Table的参数。