老师什么时候要带括号什么时候不带括号呢?为啥有的时候又报错
来源:4-1 鸭子类型和多态

yupanpan714
2019-07-26
写回答
2回答
-
首先明确一点:在一个变量后面加上“()“, 就是要调用这个对象的__call__方法, 不过我们一般把作用于类上的这个符号叫做实例化, 一个类调用了这个符号以后返回的是对象!!!注意一下,对象和类虽然都可以比较作对象,但是类这个对象是有__call__方法的,但是这个类一旦实例化产生的新对象就没有这个方法了。类一定是可以实例化的,也就是如果一个变量是类 那么就可以在这个变量后面加括号,如果一个变量是对象,那抱歉了, 你不能进行实例化了
第一张图: animal=cat() , 这个时候animal是一个对象,所以不能在后面加括号了,但是你这里面并没有对animal进行实例化, 也就没有就行animal() ,所以当然不会报错
第二张图: 和第一张图一样。animal这个时候已经是实例了,这个时候再在后面加括号(实例化) 所以一定会报错
第三张图:你把Cat赋值给animal,这个时候animal是类。因为你没有对cat进行实例化,因为类可以实例化 所以这个时候你进行animal()和直接调用cat()是一样的效果 ,所以不会报错
122019-07-30 -
老中医学编程
2019-07-27
第一个加括号是正常类(对象)的实例化,第三个不加括号相当于给这个类取了另外一个名字,第二个出错是因为程序找不到animal()这个类或者函数
012019-07-27
相似问题