老师什么时候要带括号什么时候不带括号呢?为啥有的时候又报错

来源:4-1 鸭子类型和多态

yupanpan714

2019-07-26

图片描述

写回答

2回答

bobby

2019-07-27

首先明确一点:在一个变量后面加上“()“, 就是要调用这个对象的__call__方法, 不过我们一般把作用于类上的这个符号叫做实例化, 一个类调用了这个符号以后返回的是对象!!!注意一下,对象和类虽然都可以比较作对象,但是类这个对象是有__call__方法的,但是这个类一旦实例化产生的新对象就没有这个方法了。类一定是可以实例化的,也就是如果一个变量是类 那么就可以在这个变量后面加括号,如果一个变量是对象,那抱歉了, 你不能进行实例化了


第一张图: animal=cat() , 这个时候animal是一个对象,所以不能在后面加括号了,但是你这里面并没有对animal进行实例化, 也就没有就行animal() ,所以当然不会报错

第二张图: 和第一张图一样。animal这个时候已经是实例了,这个时候再在后面加括号(实例化) 所以一定会报错

第三张图:你把Cat赋值给animal,这个时候animal是类。因为你没有对cat进行实例化,因为类可以实例化 所以这个时候你进行animal()和直接调用cat()是一样的效果 ,所以不会报错

1
2
bobby
回复
yupanpan714
能帮助大家学懂也是录制课程的目的,加油
2019-07-30
共2条回复

老中医学编程

2019-07-27

第一个加括号是正常类(对象)的实例化,第三个不加括号相当于给这个类取了另外一个名字,第二个出错是因为程序找不到animal()这个类或者函数

0
1
yupanpan714
cat()赋给animal为啥animal不用加括号?
2019-07-27
共1条回复

Python3高级核心技术97讲,高级进阶的必学课程

socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO

2121 学习 · 551 问题

查看课程