Автоматизированный и масштабируемый подход для хранения каждого элемента словаря в атрибутах класса (экземпляра) с одина ⇐ Python
Автоматизированный и масштабируемый подход для хранения каждого элемента словаря в атрибутах класса (экземпляра) с одина
У меня есть словарь input_dict={'foo1':3, 'foo2':6, и я хочу сохранить его содержимое в экземпляре класса matClass, например что mat.foo1=3, mat.foo2=6 и т. д.
Мне нужно автоматизировать этот процесс, поскольку размер словаря может меняться в зависимости от действий пользователя.
Приведенный ниже код перебирает элементы словаря и использует setattr для итеративного создания атрибутов класса с тем же ключом и значением, что и словарь. Оператор if предназначен для проверки того, что переменные, введенные пользователем, действительно поддерживаются остальной частью кода.
input_dict = {'foo1':3, 'foo2':6} класс matClass: разрешенный_вход = ['foo1', 'foo2'] защита __init__(сам): проходить Защиту import_data(self, input_dict): если установлено (список(input_dict.keys())).issubset(self.allowed_input): для ключа значение в input_dict.items(): setattr(я, ключ, значение) мат = матКласс() mat.import_data(input_dict) Есть ли более чистый способ сделать это? Есть ли в этом подходе скрытые опасности?
Я не обязательно привязан к словарям, я мог бы использовать фреймы данных, если это удобнее.
У меня есть словарь input_dict={'foo1':3, 'foo2':6, и я хочу сохранить его содержимое в экземпляре класса matClass, например что mat.foo1=3, mat.foo2=6 и т. д.
Мне нужно автоматизировать этот процесс, поскольку размер словаря может меняться в зависимости от действий пользователя.
Приведенный ниже код перебирает элементы словаря и использует setattr для итеративного создания атрибутов класса с тем же ключом и значением, что и словарь. Оператор if предназначен для проверки того, что переменные, введенные пользователем, действительно поддерживаются остальной частью кода.
input_dict = {'foo1':3, 'foo2':6} класс matClass: разрешенный_вход = ['foo1', 'foo2'] защита __init__(сам): проходить Защиту import_data(self, input_dict): если установлено (список(input_dict.keys())).issubset(self.allowed_input): для ключа значение в input_dict.items(): setattr(я, ключ, значение) мат = матКласс() mat.import_data(input_dict) Есть ли более чистый способ сделать это? Есть ли в этом подходе скрытые опасности?
Я не обязательно привязан к словарям, я мог бы использовать фреймы данных, если это удобнее.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Доступ к атрибуту экземпляра родительского класса из экземпляра дочернего класса?
Anonymous » » в форуме Python - 0 Ответы
- 54 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Другое поведение синглтона при использовании класса и dict для хранения экземпляра
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-