python 的__call_方法

Posted

tags:

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

在Python中,函数其实是一个对象,所以call方法已是一个对象
,看下面的例子:

class Foo:
    pass

f1=Foo()
print(f1)
f1()

输出的结果为
技术分享图片

从输出的结果来看报错的原因是Foo这个类不能被调用,
从中我们也可以看出来f1是Foo的对象object
就是应为我们没有定义call方法,所以才导致不能被调用,

我们修改下代码

class Foo:
    def __call__(self, *args, **kwargs):
        print(‘这个是call方法‘)

f1=Foo()
print(f1)
f1()

这样就没问题了

技术分享图片

这也说明了f1()调用的是Foo下面的call方法

以上是关于python 的__call_方法的主要内容,如果未能解决你的问题,请参考以下文章

python中__call__方法解析

python类中内置方法之__call__

python中__call__()方法的用法

Python类__call__()方法

Python3中__call__方法介绍

python魔法方法详解