正如你可能已经知道,在 Python 中函数是第一类对象。 这就意味着它们可以被传递到函数和方法,就像是任何类型的对象。 这真是一种难以置信强大的特性。
这是 Python 中一个特别的神奇方法,它允许你的类实例像函数。 所以你可以“调用”它们,把他们当做参数传递给函数等等。 这是另一个强大又便利的特性让 Python 的编程变得更可爱了。
__call__(self, [args...])
允许类实例像函数一样被调用。 本质上,这意味着 x() 等价于 x.__call__()。 注意,__call__ 需要的参数数目是可变的,也就是说可以对任何函数按你的喜好定义参数的数目定义 __call__
__call__ 可能对于那些经常改变状态的实例来说是极其有用的。 “调用”实例是一种顺应直觉且优雅的方式来改变对象的状态。 下面一个例子是一个类表示一个实体在一个平面上的位置:
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 #省略...
暂无评论
写评论