Можно ли по словарю инициализоровать переменные класса. Python3.8

Можно ли каким-то образом присвоить каждой переменной класса значения переданные в словаре. К примеру, у класса есть переменные: A, B, C, D -, и я передаю конструктору класса словарь:

dictionary = {'B': 5, 'A': 2, 'C': 45}

Конструктор должен обратиться к переменным класса по именам ключей из словаря и задать им эти значение, при этом ключи могут находиться в произвольном порядке.

Пример класса:

class Example:
    def __init__(self, d: dict):
        self.A, self.B, self.C = int
        # тут должен быть код для инициализации переменных переданных в словаре

    if __name__ == '__main__':
       dictionary = {'B': 5, 'A': 2, 'C': 45}
       ex = Example(dictionary)
       print(ex.B)  # Должно вывести: "5".

Ответы (4 шт):

Автор решения: SmellyNS

В конструкторе класса для каждого элемента.

self.A = dictionary.get('A')

Пример:

class Foo:
    def __init__(self, dictionary: dict):
        self.A = dictionary.get('A')
        self.B = dictionary.get('B')
        self.C = dictionary.get('C')

dictionary = {'B': 5, 'A': 2, 'C': 45, 'D': 111}
foo = Foo(dictionary)
print(foo.A, foo.B, foo.C)
# 2 5 45
→ Ссылка
Автор решения: gil9red

Можно через оператор ** разложить значения словарей в аргументы конструктора:

class Foo:
    def __init__(self, A, B, C):
        self.A = A
        self.B = B
        self.C = C

dictionary = {'B': 5, 'A': 2, 'C': 45}
foo = Foo(**dictionary)
print(foo.A, foo.B, foo.C)
# 2 5 45
→ Ссылка
Автор решения: vadim vaduxa
class Foo:
    def __init__(self, dictionary: dict):
        for attr in dictionary:
            setattr(self, attr, dictionary[attr])

    # def __init__(self, dictionary: dict):
    #     self.__dict__.update(dictionary)

if __name__ == '__main__':
    dictionary = {'B': 5, 'A': 2, 'C': 45}
    foo = Foo(dictionary)
    print(foo.A, foo.B, foo.C)  # 2 5 45
→ Ссылка
Автор решения: description009

  for i in range(2,12):
    if i != 11:
      Name=tabel.find_element(By.XPATH,f"/html/body/div[7]/div[3]/div[1]/div[1]/div[2]/div[2]/table/tbody/tr[{i}]/td[1]").text
      Value=tabel.find_element(By.XPATH,f"/html/body/div[7]/div[3]/div[1]/div[1]/div[2]/div[2]/table/tbody/tr[{i}]/td[2]").text
      charateridic[f"{Name}"] = Value
      continue

У меня сработало так, надеюсь помог

→ Ссылка