Для этого вам нужно будет изменить функцию __repr__
для данного класса, которая в этом случае является встроенным классом функций (types.FunctionType
). Поскольку в Python вы не можете редактировать встроенные классы, только подклассировать их, вы не можете.
Однако есть два подхода, которым вы могли бы следовать:
myrepr
, которая сначала ищет методы __myrepr__
, которую вы не можете добавить в класс функций, но вы можете добавить ее к отдельным объектам функции, как вы предлагаете (а также к вашим пользовательским классам и объектам) , затем по умолчанию будет указано, если __myrepr__
не найден. Возможная реализация для этого будет: def myrepr(x):
try:
x.__myrepr__
except AttributeError:
return repr(x)
else:
return x.__myrepr__()
Затем вы можете определить методы __myrepr__
и использовать функцию myrepr
. Кроме того, вы также можете __builtins__.repr = myrepr
сделать свою функцию по умолчанию repr
и продолжать использовать repr
. Этот подход в конечном итоге сделает именно то, что вы хотите, хотя редактирование __builtins__
может не всегда быть желательным.