Лучший способ добавить атрибуты в функцию PythonPython

Программы на Python
Ответить
Anonymous
 Лучший способ добавить атрибуты в функцию Python

Сообщение Anonymous »

Возьмем простой случай функции Python, которая оценивает математическую функцию:

Код: Выделить всё

def func(x, a, b, c):
"""Return the value of the quadratic function, ax^2 + bx + c."""

return a*x**2 + b*x + c
Предположим, я хочу «присоединить» дополнительную информацию в виде атрибута функции. Например, представление LaTeX. Я знаю, что благодаря PEP232 я могу сделать это вне определения функции:

Код: Выделить всё

def func(x, a, b, c):
return a*x**2 + b*x + c
func.latex = r'$ax^2 + bx + c$'
но я бы хотел сделать это внутри самого определения функции. Если я напишу

Код: Выделить всё

def func(x, a, b, c):
func.latex = r'$ax^2 + bx + c$'
return a*x**2 + b*x + c
это, конечно, работает, но только после того, как я впервые вызвал функцию (потому что Python «ленив» в выполнении функций(?))

Моя единственная возможность написать вызываемый класс?

Код: Выделить всё

class MyFunction:
def __init__(self, func, latex):
self.func = func
self.latex = latex

def __call__(self, *args, **kwargs):
return self.func(*args, **kwargs)

func = MyFunction(lambda x,a,b,c: a*x**2+b*x+c, r'$ax^2 + bx + c$')
Или есть какая-то особенность языка, которую я упускаю из виду, чтобы сделать это аккуратно?

Подробнее здесь: https://stackoverflow.com/questions/470 ... n-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»