通过直接访问实例的变量,还是可以打印的。

来源:9-11 静态方法

慕的地6863477

2019-03-11

http://img.mukewang.com/szimg/5c876bdc0001acfb12681108.jpg

不好意思,图片忘记加了。

我的意思是,通过实例student.name还是可以访问实例的变量的。

写回答

4回答

print_蓝_

2020-03-24

不谈这种行为有没有意义啊,单看原理,以之前学js的观念来看,首先29行student实例化先执行,即全局变量里已经有了student这个变量,然后才执行30行和31行,且都是调用实例的plus_sum和add这两个方法,这两个方法运行环境实际上也是在全局环境下执行,就等于在全局环境下直接执行plus和add这两个函数,那么自然能获取到全局里的student这个实例对象,故student.name能获取到值,同样调用实例方法也可以这么取,原因还是执行环境

而之所以实例方法能用self.name是因为,你实例方法定义时传入了self,这个self指向被实例化对象本身,且需要用实例去调用,self和js里的this有点类似

当然,类方法也可以调用实例方法,但是调用时你需要传入实例化对象,按上图举个例子就是:Student.实例方法(student),目的让方法里的self有指向这个传入的实例化对象


0
0

爱吃apple的阿狸

2019-10-15

这算是多此一举,类方法和静态方法就是用来在不实例化对象的时候调用的。你这样定义类,不是强行要先实例化才能使用这些方法么,一旦你不实例化对象,就会报错的。

0
0

7七月

2019-03-12

不是 你把代码截全。我没看懂你这里student在外部定义的一个变量,是怎么在内部调用的?

0
0

7七月

2019-03-12

什么意思?

0
1
慕的地6863477
不好意思,忘记上传图片了
2019-03-12
共1条回复

Python3.8系统入门+进阶 (程序员必备第二语言)

语法精讲/配套练习+思考题/原生爬虫实战

14598 学习 · 4469 问题

查看课程