У меня есть следующий класс:Получить упорядоченный словарь атрибутов класса внутри __init__
class NewName:
def __init__(self):
self.Name = None
self.DecomposedAlias = OrderedDict([("Prefix", None),
("Measurement", None),
("Direction", None),
("Item", None),
("Location", None),
("Descriptor", None),
("Frame", None),
("RTorigin", None)])
self.Meaning = ""
self.SIUnit = OrderedDict([("ScaleFactor", None),
("Offset", None),
("A", None),
("cd", None),
("K", None),
("kg", None),
("m", None),
("mol", None),
("rad", None),
("s", None)])
self.NormalDisplayUnit = OrderedDict([("ScaleFactor", None),
("Offset", None),
("A", None),
("cd", None),
("K", None),
("kg", None),
("m", None),
("mol", None),
("rad", None),
("s", None)])
self.OrientationConvention = ""
self.ContactPerson = ""
self.Note = ""
self.SubType = None
self.RefersTo = []
Если я создаю экземпляр нового объекта этого класса я могу получить словарь, как это:
mynewname = NewName()
mynewdict = mynewname.__dict__
Что делать, если Я хочу, чтобы mynewdict
был заказан таким же образом, что и атрибуты NewName
были созданы в его __init__
?
Проведя некоторые исследования, я нашел this, но в моем случае я бы просто получил ['__init__']
. Есть ли способ указать атрибуты внутри __init__
?
Для полноты я должен упомянуть, что я использую Python 3.4.
спасибо, теперь я могу получить упорядоченный словарь. Однако после предлагаемой модификации класса, если я попрошу 'mynewdict = mynewname .__ dict__', он возвращает пустой словарь. Вы знаете, почему? – Francesco
@Francesco В этом случае, если вы хотите иметь атрибуты в '' __dict__' экземпляра, вы должны использовать 'object .__ setattr __ (self, name, val)' для установки атрибутов. – Kasramvd
Благодарим за редактирование. Однако я не специалист по питону, и, боюсь, я не понял, что вы имеете в виду. В моем классе я добавил функцию вроде: '@staticmethod def ordered_dict(): return ordered_attrs' , чтобы получить упорядоченный словарь с' mynewdict = mynewname.ordered_dict() '. Как использовать 'object .__ setattr __ (self, name, val)' для получения неупорядоченного словаря, как я получил с помощью mynewdict = mynewname .__ dict__'?Другими словами, после предлагаемой модификации класса я могу по-прежнему каким-то образом стать неупорядоченным словарем? – Francesco