lxstvayne
@lxstvayne
Люблю Python

Можно ли перехватить присваивание аргументов параметрам функции?

Хочу перехватить передачу аргументов в функцию, чтобы засунуть их в ParamField. Может быть это можно сделать по другому, не как я написал ? Копал в сторону дескрипторов, но пока ответа не нашёл.
def test_func(message: base.String = ParamField(), ids: typing.List[int] = ParamField(encoder=ListToStrMapper)):
    print(type(message))
    print(message.to_object())

test_func("Hello world", [1, 2, 3, 4, 5])

Хочу при указывании аргумента параметру message, тип ParamField не затирался, а вызывался какой-нибудь .set_value(), для него.
  • Вопрос задан
  • 89 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Ты хочешь странного.
Или тебе подконтрольна функция, или вызывающий её код.
Если тебе подконтрольна функция, пусть она сама преобразует свои аргументы как ей надо.
Если функция неподконтрольна, но подконтролен вызывающий код, пусть он преобразует аргументы как надо функции.
А если ни то ни то не устраивает, сделай функцию-обёртку, хоть простую, хоть декоратор, и пусть она это делает, а потом вызывает исходную функцию.
И что такое ParamField?
Ответ написан
Ваш ответ на вопрос

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

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