Переменное количество аттрибутов экзамеляра класса
Я хочу написать класс на python, который в конструкторе принимает переменное число аргументов, которые должны быть в будущем аттрибутами данного обьекта класса Например:
class MyClass:
def __init__(self, *argv):
for i in range(int((len(argv) - 3) / 2)):
self[argv[2 * i - 2]] = argv[2 * i - 1]
Сам main.py:
t = MyClass("name", "Ivan", "surname", "Ivanov")
Но проблема в том, что у экземпляра t класса MyClass аттрибутов name и surname нет (это я проверяю с помощью функции dir(t)). Как я могу исправить эту пробллему, чтобы я могла задавать переменное количество аттрибутов для определенного обьекта класса?
Ответы (1 шт):
Автор решения: Xander
→ Ссылка
Вам нужен setattr
class MyClass:
def __init__(self, *argv):
for i in range(int((len(argv)) / 2)):
key = argv[2 * i]
value = argv[2 * i + 1]
setattr(self, key, value) # вот так вот
Ну и с индексами вы что-то перемудрили (если передано четыре аргумента, то int((len(argv) - 3) / 2) получается равным нулю и цикл вообще не выполняется), я поправил.