python中__call__()深度分析

前言:

       在开始介绍__call__()函数时,先来看一个例子:

class TestClass(object):
    a=1
    def __init__(self):
        self.c=4

    def do_func(self):
        print("这是方法")


test=TestClass()
test1=TestClass
print(test.a)
print(test.c)
print(test1().c)
print(test1.c)

程序的运行结果:

python中__call__()深度分析_第1张图片

可以思考下,为什么test1.c会报错

__call__()的介绍:

      __call__()函数其实就是一个特殊的实例方法,在使用的时候不需要像test.do_func()或者是像test1.do_func()方式调用,直接使用test()的方式就可以,可以很多的时候直接在实例化的对象后加()会报错,那是因为没有实现__call__()函数,如下图:

python中__call__()深度分析_第2张图片

图中创建了一个类TestClass,再实例化了一个对象test3,让test3()这样会报错,因为TestClass2中没有实现__call__()方法,且继承的object类也没有实现该方法,所以这样使用就会报错如下:

python中__call__()深度分析_第3张图片

我们加上这个方法,如下例子:

python中__call__()深度分析_第4张图片

这样的话就很清楚的知道test3()其实就等同于te

你可能感兴趣的:(Python基础,python,深度学习,类,调用,编程语言)