Python中文
首页
教程
问答
标签
搜索
登录
注册
重写dir方法的正确方法是什么?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>这个问题更多的是关于<code>__dir__</code>,而不是关于<code>numpy</code>。</em></p> <p>我有一个<code>numpy.recarray</code>(在python 2.7,numpy 1.6.2中)的子类,我注意到当<code>dir</code>处理对象时,<code>recarray</code>的字段名没有列出(因此I python的自动完成不起作用)。</p> <p>为了修复它,我尝试重写子类中的<code>__dir__</code>,如下所示:</p> <pre><code>def __dir__(self): return sorted(set( super(MyRecArray, self).__dir__() + \ self.__dict__.keys() + self.dtype.fields.keys())) </code></pre> <p>结果是:<code>AttributeError: 'super' object has no attribute '__dir__'</code>。 (我发现<a href="http://bugs.python.org/issue12166" rel="noreferrer">here</a>这实际上应该在python 3.3中工作…)</p> <p>作为权宜之计,我试着:</p> <pre><code>def __dir__(self): return sorted(set( dir(type(self)) + \ self.__dict__.keys() + self.dtype.fields.keys())) </code></pre> <p>据我所知,这一个工作,但当然,没有优雅。</p> <p>问题:</p> <ol> <li>后一种解决方案在我的情况下是否正确,即对于<code>recarray</code>的一个子类?</li> <li>有没有办法让它在一般情况下起作用?在我看来,它不适用于多重继承(破坏<code>super</code>-调用链),当然,对于没有<code>__dict__</code>的对象。。。</li> <li>你知道为什么<code>recarray</code>不支持以列出其字段名开头吗?仅仅是疏忽?</li> </ol>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>你试过了吗:</p> <pre><code>def __dir__(self): return sorted(set( dir(super(MyRecArray, self)) + \ self.__dict__.keys() + self.dtype.fields.keys())) </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何将Python中的列表复制到给定的目标中?
10 回答
如何将python中的列表插入SQL表
3 回答
如何将python中的列表转换为numpy数组以放入十位
3 回答
如何将python中的列表输入javascript?
7 回答
如何将python中的列表返回给dag?
8 回答
如何将Python中的列表项重新排列成成对的元组/列表?
6 回答
如何将Python中的初始化对象序列化为XML?
6 回答
如何将python中的十进制字符串转换为数字?
7 回答
如何将Python中的原始输入文本转换为Tkinter中的标签?
9 回答
如何将python中的反斜杠命令转换为在Linux上运行
7 回答
如何将python中的命令行参数转换为字典?
4 回答
如何将python中的图像值传递到kivy中的kv文件?
3 回答
如何将Python中的图像数组(枕头对象)上传到Google云
5 回答
如何将Python中的图像编码为Base64?
3 回答
如何将python中的图像调整为灰度低分辨率,如MNIST时尚数据?
4 回答
如何将python中的多个html输出保存到单个文件(或多个)中?
1 回答
如何将Python中的多个ifelse语句重构为一个函数?
8 回答
如何将Python中的多处理与Django结合使用,从xml文件创建数千个模型实例?
1 回答
如何将python中的多级API响应转换为dataframe
8 回答
如何将python中的多线程编程模型转换为异步/等待模型?
2 回答