Вот ссылка на мой первый вопрос: Creating class instance from dictionary?
Так что я пытаюсь создать экземпляр класса из словаря, который содержит ключи, которых нет у класса. Например:Есть ли способ получить атрибуты экземпляра класса без создания экземпляра класса?
class MyClass(object):
def __init__(self, value1, value2):
self.attr1 = value1
self.attr2 = value2
dict = {'attr1': 'value1', 'attr2': 'value2', 'redundant_key': 'value3'}
Перед созданием экземпляра класса я должен удалить этот redundant_key
из Словаре
dict.pop('redundant_key', None)
new_instance = MyClass(**dict)
Проблема заключается в том, что у меня есть несколько классов и несколько dicts с большим количеством ключей (у меня есть несколько ответов в формате json, которые представлены как dicts, и я хочу создавать объекты из этих json-ответов). Я уже нашел временное решение из предыдущего вопроса - как удалить избыточные ключи. Я могу создать новый Dict от старого Словаре только с ключами, которые мне нужны:
new_dict = {key: old_dict[key] for key in allowed_keys}
Так вот код:
class MyClass(object):
def __init__(self, value1, value2):
self.attr1 = value1
self.attr2 = value2
dict = {'attr1': 'value1', 'attr2': 'value2', 'redundant_key': 'value3'}
new_instance = MyClass(**{key: dict[key] for key in allowed_keys})
Все, что мне нужно сейчас, чтобы получить allowed_keys
. Итак, вопрос: есть ли способ получить атрибуты экземпляра класса без создания экземпляра класса?
Во-первых, это невозможно, во-вторых, вы хотите получить аргументы функции, а не атрибуты экземпляра, которые возможны путем проверки. – Daniel
Это технически невозможно, атрибуты могут быть добавлены и удалены динамически для экземпляров, поэтому нет смысла иметь их с фактическим экземпляром. Я не уверен, зачем вам это нужно, где определены 'allowed_keys'? – luk32
@ Daniel Все, что мне нужно, это получить 'attr1' и' attr2' в 'allowed_keys', когда атрибуты attr1,' attr2' являются экземплярами класса – Demyanov