god*_*ygo 3 python inheritance ordereddictionary
我正在尝试在交互式shell(IPython在我的情况下)中工作时从分析中实现漂亮的结果.这是某种映射,顺序对我来说很重要,所以我试图继承OrderedDict和覆盖__repr__方法,但这种方法不起作用.最低测试示例:
In[1]: from collections import OrderedDict
In[2]: class Result(OrderedDict):
def __repr__(self):
if self.keys():
report = []
for k, v in self.items():
report.append(k.ljust(10) + ': ' + repr(v))
return "\n".join(report)
else:
return self.__class__.__name__ + "()"
In[3]: res = Result()
res['all'] = 10
res['some'] = 11
res
Out[3]: Result([('all', 10), ('some', 11)])
Run Code Online (Sandbox Code Playgroud)
但是当我继承自dict(class Result(dict):)时,这种方法按预期工作,结果如下:
Out[3]: all : 10
some : 11
Run Code Online (Sandbox Code Playgroud)
但订单无法保证.我不知道,为什么第一种方法不起作用?
编辑:
Python 3.6.1
IPython 6.0.0
| 归档时间: |
|
| 查看次数: |
460 次 |
| 最近记录: |