以计算数学函数的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
这当然有效,但only after我第一次调用了func
(因为Python在执行函数时是"懒惰的")
写一个可调用类是我唯一的 Select 吗?
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$')
或者,我忽略了语言的一个特点,而没有做到这一点?