Как обновить переменную класса из словаря? Я придумал грязный хак, но я ищу (если есть) для чего-то более аккуратного.Обновление переменной класса python на основе словаря
Предположим, что мне нужен класс C, параметры которого будут заданы на основе данного словаря. В результате c должен иметь
class C:
def setVar(self, var):
for key in var.keys():
exec('self.{} = {}'.format(key, var[key]))
D = {'a':1, 'b':2, 'c':3}
c = C()
c.setVar(D)
# c.a = 1
# c.b = 2
# c.c = 3
Я знаю, что вы не просите, но на всякий случай вы не знаете, вы можете использовать метод '__init__' для установки начальных значений этих переменных (класс будет создан как' c = C (** D) ') –
@PauloAlmeida: Передача' ** D' на '__init__' не будет автоматически ничего делать; вам нужно написать метод '__init__', который выполняет в основном то же самое, что и' setVar' (за исключением принятия '** kwargs' вместо' var' и циклизации над 'kwargs' вместо' var'). – abarnert
@abarnert, я знаю, я просто хотел убедиться, что он знает об этой возможности. Я не думал о цикле через '** kwargs', я бы предложил установить каждую переменную в словаре явно. Как я уже сказал, я знаю, что это был не вопрос, просто подумал, что это полезная информация, если он не знает. –