首先明确一点:在一个变量后面加上“()“, 就是要调用这个对象的__call__方法, 不过我们一般把作用于类上的这个符号叫做实例化, 一个类调用了这个符号以后返回的是对象!!!注意一下,对象和类虽然都可以比较作对象,但是类这个对象是有__call__方法的,但是这个类一旦实例化产生的新对象就没有这个方法了。类一定是可以实例化的,也就是如果一个变量是类 那么就可以在这个变量后面加括号,如果一个变量是对象,那抱歉了, 你不能进行实例化了
第一张图: animal=cat() , 这个时候animal是一个对象,所以不能在后面加括号了,但是你这里面并没有对animal进行实例化, 也就没有就行animal() ,所以当然不会报错
第二张图: 和第一张图一样。animal这个时候已经是实例了,这个时候再在后面加括号(实例化) 所以一定会报错
第三张图:你把Cat赋值给animal,这个时候animal是类。因为你没有对cat进行实例化,因为类可以实例化 所以这个时候你进行animal()和直接调用cat()是一样的效果 ,所以不会报错