可以调用的对象
Python中一切皆对象
函数也是一个对象
>>> def fn():
pass
>>> fn
<function fn at 0x03871C00>
>>> 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
网友评论