通过直接访问实例的变量,还是可以打印的。
来源:9-11 静态方法

慕的地6863477
2019-03-11
不好意思,图片忘记加了。
我的意思是,通过实例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有指向这个传入的实例化对象
00 -
爱吃apple的阿狸
2019-10-15
这算是多此一举,类方法和静态方法就是用来在不实例化对象的时候调用的。你这样定义类,不是强行要先实例化才能使用这些方法么,一旦你不实例化对象,就会报错的。
00 -
7七月
2019-03-12
不是 你把代码截全。我没看懂你这里student在外部定义的一个变量,是怎么在内部调用的?
00 -
7七月
2019-03-12
什么意思?
012019-03-12
相似问题