Python中__call__的用法

Posted X我们不一样

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中__call__的用法相关的知识,希望对你有一定的参考价值。

概念:

  Python中有一个有趣的语法,只要定义类型的时候,实现__call__函数,这个类型就成为可调用的。换句话说,我们可以把这个类型的对象当作函数来使用,相当于 重载了括号运算符。

 

 示例:

  所有的函数都是可调用对象。一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__ ,我们把 Person 类变成一个可调用对象:

  class Person(object):
    def __init__(self, name, gender):
      self.name = name
      self.gender = gender

    def __call__(self, friend):
      print ‘My name is %s...‘ % self.name
      print ‘My friend is %s...‘ % friend
  现在可以对 Person 实例直接调用:

  >>> p = Person(‘Bob‘, ‘male‘)
  >>> p(‘Tim‘)
  My name is Bob...
  My friend is Tim...
  单看 p(‘Tim‘) 你无法确定 p 是一个函数还是一个类实例,所以,在Python中,函数也是对象,对象和函数的区别并不显著。














以上是关于Python中__call__的用法的主要内容,如果未能解决你的问题,请参考以下文章

python中__init__()__new__()__call__()__del__()用法

python中__init__()__new__()__call__()几个魔法方法的用法

类python中高级用法

python3--__call__拦截调用

python的*args和**kwargs基础用法

python中__call__方法解析