У меня есть два класса в моем коде. first
является родителем, который наследует second
.Замена по умолчанию __dict__ для объекта с OrderedDict
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)
Я хотел бы напечатать second
с помощью __dict__
или __repr__
, но я получил неупорядоченный словарь. Что я должен изменить?
«__dict__» экземпляров 'OrderDict' сам по себе не является экземпляром' OrderedDict' ... –
Не могли бы вы объяснить * почему * вы хотите это? Могут быть другие подходы, которые вы могли бы изучить. – jonrsharpe
Почему вы _need_ '__dict__' заказываете? Обычные 'dict' более эффективны, и для печати вы можете просто отсортировать dict в своих '__repr__' или' __str__' методах. –