Python__call__方法

可以调用的对象

Python中一切皆对象

函数也是一个对象

>>> def fn():
    pass
>>> fn

>>> fn()
>>> 
  • 上面我们看到,后面加上括号可以直接调用,我们称之后可调用对象。

  • 类也是一个可调用对象,其调用返回实例,故类对象的类即元类(最著名的是type)也要实现__call__方法。

  • object类没有__call__方法,所以大部分直接继承object类的类所产生的对象不能被调用。(type类虽然也继承了object类,但是其实现了该方法)

自定义该类型的类

这种类型的类适用于实例经常改变状态

class Entity:
'''调用实体来改变实体的位置。'''

def __init__(self, size, x, y):
    self.x, self.y = x, y
    self.size = size

def __call__(self, x, y):
    '''改变实体的位置'''
    self.x, self.y = x, y

你可能感兴趣的:(Python__call__方法)