美文网首页Python3学习
python中__call__方法解析

python中__call__方法解析

作者: 帅子锅 | 来源:发表于2017-08-12 17:11 被阅读1216次

__call__方法是python的魔术方法,就是增加一些特殊功能,我们来看看__call__代表了什么意思?
python中所有的东西都被称为对象,对象分为可以被调用和不可以被调用
可调用对象:许多Python对象都是我们所说的可调用的,即是任何通过函数操作符()来调用的对象

1.例如函数
函数是对象,可以被调用

def foo(x):
  retuen x

a=foo(3) #a被调用
print(a)
callable(foo())
callable(a)#输出是true,代表foo是可被调用的,注意,这里可不是指a是可以被调用的,因为foo是赋值给a的

2.但是如果是类的话会发生什么情况呢?
Python给类提供了名为__call__的特别方法,该方法允许程序员创建可调用的对象(实例)。默认情况下,__call__方法是没有实现的,这意味着大多数情况下实例是不可调用的。

class test():
  def method(self):
    return 1
a = test()
callable(a)#false,代表实例a是不可被调用

如何解决这一个问题?这里就用到__call__函数

class test():
  def __call__(self):
    return 1
a = test()
callable(a)#true,代表实例a是可被调用

以上说明__call__

相关文章

  • python中__call__方法解析

    __call__方法是python的魔术方法,就是增加一些特殊功能,我们来看看__call__代表了什么意思?py...

  • Python装饰器(5)类装饰器

    内容纯属个人理解,不对之处,欢迎指正。 __call__ 在Python中,具有__call__方法的对象才可以被...

  • Python 单例模式

    元类方法__call__ 可以这样使用: 如下: 调用__call__实现python 单例模式 元类继承: 测试:

  • 28.Python之内置的魔术方法

    Python之内置的魔术方法 __call__方法在调用对象时(实例化的对象加括号),会自动触发类中的__call...

  • python学习:神奇的__call__函数

    在最近的学习中发现,装饰器与metaclass都离不开__call__。python中的__call__函数到底是...

  • Python class中的__call__()方法

    概要 Python中,如果在创建class的时候写了call()方法, 那么该class实例化出实例后, 实例名(...

  • 名为__call__的特殊方法

    通过名为__call__的特殊方法,可以使类的实例能够像普通的Python函数那样得到调用。 current = ...

  • Python 的 __call__ 方法

    示例 通过上面的小例子可以看到,__call__ 方法的作用就是让类的实例可以像函数一样被调用(called)。可...

  • python特殊函数 __call__()

    __call__在Python中,函数其实是一个对象:>>> f = abs>>> f.__name__'abs'...

  • Python高级第五天

    闭包和装饰器 一、魔法方法之__call__ 在Python中,函数其实是一个对象,所有的函数都是可调用对象,一个...

网友评论

    本文标题:python中__call__方法解析

    本文链接:https://www.haomeiwen.com/subject/pqsjrxtx.html