[关闭]
@songying 2018-07-12T15:49:30.000000Z 字数 461 阅读 1075

可调用模拟 -- 特殊方法

python特殊方法


Python中一个特殊的魔法方法允许你自己类的对象表现得像是函数,然后你就可以“调用”它们,把它们传递到使用函数做参数的函数中,等等等等。

__call__

允许类的一个实例像函数那样被调用。本质上这代表了 x() 和 x.__call__() 是相同的。注意 __call__ 可以有多个参数,这代表你可以像定义其他任何函数一样,定义 __call__ ,喜欢用多少参数就用多少。

  1. __call__(self, [args...])

call 在某些需要经常改变状态的类的实例中显得特别有用。“调用”这个实例来改变它的状态,是一种更加符合直觉,也更加优雅的方法。一个表示平面上实体的类是一个不错的例子:

  1. class Entity:
  2. '''表示一个实体的类,调用它的实例
  3. 可以更新实体的位置'''
  4. def __init__(self, size, x, y):
  5. self.x, self.y = x, y
  6. self.size = size
  7. def __call__(self, x, y):
  8. '''改变实体的位置'''
  9. self.x, self.y = x, y
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注