【发布时间】:2015-01-14 11:13:43
【问题描述】:
我的代码中有两个类。 first 是父级,second 继承。
class first(object):
def __init(self,**kwargs):
pass
def __setattr__(self,name,value):
self.__dict__[name] = value
class second(first):
def do_something(self):
self.a = 1
self.b = 2
self.c = 3
当我第二次打印课程时(例如second.__dict__),我得到了无序字典。这是显而易见的。我想更改此行为以使用 OrderedDict 类获取有序字典,但它不起作用。我正在通过以下方式更改first 的实现:
class first(OrderedDict):
def __init__(self,**kwargs):
super(first,self).__init__(**kwargs)
def __setattr__(self,name_value):
super(first,self).__setattr__(name_value)
我想使用__dict__ 或__repr__ 打印second,但我得到了无序字典。我应该改变什么?
【问题讨论】:
-
__dict__的OrderDict实例本身并不是OrderedDict实例... -
你能解释一下为什么你想要这个吗?您可能还可以探索其他方法。
-
您为什么需要
__dict__来订购?普通的dicts 效率更高,对于打印,您只需在__repr__或__str__方法中对dict 进行排序。 -
我希望元素的顺序与创建它们时相同。我在屏幕上打印这些信息并订购事宜。在这种情况下排序没有帮助。
-
@martineau 公平点。当然,这对于 Python 3.6+ 来说不是问题,因为普通的
dict现在保持插入顺序。
标签: python dictionary ordereddictionary