Мне нужно вызвать функцию перед инициализацией атрибута, желательно с использованием класса данных python3.7, также можно назвать namedtuple.
Этот код делает что-то похожее, и имя атрибута просто набирается один раз, но это очень запутаннои я не знаю, как поддерживать значения по умолчанию.Я уверен, что есть лучший и более питонский способ сделать это.
from collections import namedtuple
person = {
'name': (lambda value: value.upper()),
'age': (lambda value: value*2),
}
class Person(namedtuple("Person", person.keys())):
def __new__(cls, **kwargs):
return super().__new__(cls, **{k:person[k](v) for k, v in kwargs.items() if v is not None and k in person})
l = Person(**{'name': 'gesiel', 'age': 34})
print(l)