刚开始学python,遇到过__call__方法。我通过运行一个简单的示例了解何时调用 __init__ 以及何时调用 __call__ :
class Constructor:
def __init__(self, a):
print "__init__ called"
def __call__(self):
print "__call__ called"
def dummy(self):
print "a dummy method called"
print "creating x obj"
x = Constructor(1)
print "calling x object"
x()
控制台输出:
creating x obj
__init__ called
calling x object
__call__ called
我的问题是:
- 我有 java 背景,我知道
__init__映射到 java 构造函数,java 是否有等同于__call__的方法来帮助我更好地理解这一点? - 谁能给我一个简单的例子,说明
__call__何时有用?
请您参考如下方法:
__call__ 等同于在类上重载 () 运算符。这在 C++ 中是可能的,但在 Java 中不行。它允许一个人拥有函数对象(有时称为仿函数)。
在 Python 中,这些被称为可调用对象。
简单来说,这允许您将对象视为函数。
这些概念的实际用途超出了本答案的范围,但互联网上有大量信息。例如Wikipedia .
