【发布时间】:2013-03-21 02:16:25
【问题描述】:
我正在尝试为我的班级学习 Python 中的柯里化,我必须为它重载 () 运算符。但是,我不明白如何才能重载 () 运算符。你能解释一下重载括号背后的逻辑吗?我应该先超载(然后)还是可以做任何这些?另外,括号运算符有特殊名称吗?
【问题讨论】:
标签: python operator-overloading
我正在尝试为我的班级学习 Python 中的柯里化,我必须为它重载 () 运算符。但是,我不明白如何才能重载 () 运算符。你能解释一下重载括号背后的逻辑吗?我应该先超载(然后)还是可以做任何这些?另外,括号运算符有特殊名称吗?
【问题讨论】:
标签: python operator-overloading
您可以通过实现__call__ 方法使对象可调用:
class FunctionLike(object):
def __call__(self, a):
print("I got called with {!r}!".format(a))
fn = FunctionLike()
fn(10)
# --> I got called with 10!
【讨论】:
() 是一个调用运算符,它本质上是用某个参数(或没有参数)调用相关对象吗?