这个问题应该__dir__比关于更多numpy。
__dir__
numpy
我有一个子类numpy.recarray(在python 2.7中,numpy 1.6.2),并且我发现在对象recarray时未列出的字段名称dir(因此,ipython的自动完成功能无效)。
numpy.recarray
recarray
dir
为了修复它,我尝试__dir__在子类中重写,如下所示:
def __dir__(self): return sorted(set( super(MyRecArray, self).__dir__() + \ self.__dict__.keys() + self.dtype.fields.keys()))
结果是:AttributeError: 'super' object has no attribute '__dir__'。(我发现这里实际上应该在python 3.3中工作…)
AttributeError: 'super' object has no attribute '__dir__'
作为一种解决方法,我尝试了:
def __dir__(self): return sorted(set( dir(type(self)) + \ self.__dict__.keys() + self.dtype.fields.keys()))
据我所知,这是可行的,但当然并不优雅。
问题:
super
__dict__
你有没有尝试过:
def __dir__(self): return sorted(set( dir(super(MyRecArray, self)) + \ self.__dict__.keys() + self.dtype.fields.keys()))