当我打印我的功能(没有函数调用)时,
def loss(y_true, y_pred):
return backend.sum(backend.abs(y_true - y_pred))
我有点像
<function __main__.loss>
我需要它来返回一个像
这样的字符串Absolute Error Sum
大多数links我看过解释如何对类对象做同样的事情。如何定义函数应返回的字符串?
答案 0 :(得分:1)
您应该可以编辑它的__name__
属性:
>>> def f(x): print(x)
>>> f
<function f at 0x7feb2c843a28>
>>> f.__name__ = 'my function'
>>> f
<function my function at 0x7feb2c843a28>
>>> f.__name__
my function
编辑:请注意,在Python 3中,您可能需要改写__qualname__
属性(请参阅https://www.python.org/dev/peps/pep-3155/和https://github.com/ipython/ipython/issues/5566/)。
答案 1 :(得分:0)
您无法自定义功能类型的默认repr
,但您可以提取您关注的部分并根据需要对其进行格式化。
例如,如果您想要一个更友好的名称,实际名称将存储在__name__
中,因此如果您想避免额外包装,可以print(loss.__name__)
。这并不完美(例如lambda
函数没有名称),但它比尝试重写函数的默认repr
更好。