在Python中重载标准括号(“()”)

时间:2012-02-09 12:39:15

标签: python operator-overloading

这应该很简单,但我没有谷歌它:如何(如果有的话)我可以重载Python中的parantheses运算符?这样代码就有意义了:

my_new_object = my_new_class()
x = my_new_object(5)

3 个答案:

答案 0 :(得分:12)

您需要在班级上定义__call__

例如

>>> class Multiplier(object):
...    def __init__(self, num):
...        self.num = num
...    def __call__(self, other):
...        return self.num*other
...
>>> mul5 = Multiplier(5)
>>> mul5(6)
30

答案 1 :(得分:8)

在班级上定义__call__()

class MyNewClass(object):
    def __call__(self, x):
        return x

答案 2 :(得分:5)

您应该查看this document的“可调用类型”部分。特别是,您的班级可以实施__call__