前言
在Python的class中有一些函数往往具有特殊的意义。init()和__call__()就是class很有用的两类特殊的函数。
__init__()
在Python中,init()函数的意义等同于类的构造器(同理,del()等同于类的析构函数)。因此,init()方法的作用是创建一个类的实例。
__call__()
为了将一个类实例当做函数调用,我们需要在类中实现__call__()方法。
调用x.__call__(1,2)
等同于调用x(1,2)。这个实例本身在这里相当于一个函数。
代码
class X(object):
def __init__(self, a, b, range):
self.a = a
self.b = b
self.range = range
def __call__(self, a, b):
self.a = a
self.b = b
print('__call__ with ({}, {})'.format(self.a, self.b))
def __del__(self, a, b, range):
del self.a
del self.b
del self.range
>>> xInstance = X(1, 2, 3)
>>> xInstance(1,2)
__call__ with (1, 2)