@JanJarius
Заканчивающий как начинающий

«Почему {этот код} не работает?» или «Как создать метод, который создаст любой метод?» в Python?

Привет, коллеги.
Вопрос не практический, просто любопытно.

Здесь я пытался превратить аргумент в атрибут.
Почему этот код не работает? ↓

class ClassName:
    def add(self, **kwargs):
        for key, value in kwargs.items():
            eval(f'self.{key} = {value}')

exemplar = ClassName()
exemplar.add(name = 'Python')
print(exemplar.name)

# File "<string>", line 1
#     self.name = Python
#               ^
# SyntaxError: invalid syntax

Попытался изменить ключевую строку, но это тоже не работает:
class ClassName:
    def add(self, **kwargs):
        for key, value in kwargs.items():
            eval(f'self.{key} = "{value}"')

exemplar = ClassName()
exemplar.add(name = 'Python')
print(exemplar.name)

# File "<string>", line 1
#     self.name = "Python"
#               ^
# SyntaxError: invalid syntax


Первый вопрос такой:
____ Как сделать волшебный метод,
____ который будет превращать любые атрибуты в аргументы?

Второй интереснее:
____ Как сделать волшебный метод,
____ который будет превращать массив аргументов в новые методы?

Ужас как интересно!
Благодарю за любые подсказки ;)
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы