采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
不好意思,图片忘记加了。
我的意思是,通过实例student.name还是可以访问实例的变量的。
不谈这种行为有没有意义啊,单看原理,以之前学js的观念来看,首先29行student实例化先执行,即全局变量里已经有了student这个变量,然后才执行30行和31行,且都是调用实例的plus_sum和add这两个方法,这两个方法运行环境实际上也是在全局环境下执行,就等于在全局环境下直接执行plus和add这两个函数,那么自然能获取到全局里的student这个实例对象,故student.name能获取到值,同样调用实例方法也可以这么取,原因还是执行环境
而之所以实例方法能用self.name是因为,你实例方法定义时传入了self,这个self指向被实例化对象本身,且需要用实例去调用,self和js里的this有点类似
当然,类方法也可以调用实例方法,但是调用时你需要传入实例化对象,按上图举个例子就是:Student.实例方法(student),目的让方法里的self有指向这个传入的实例化对象
这算是多此一举,类方法和静态方法就是用来在不实例化对象的时候调用的。你这样定义类,不是强行要先实例化才能使用这些方法么,一旦你不实例化对象,就会报错的。
不是 你把代码截全。我没看懂你这里student在外部定义的一个变量,是怎么在内部调用的?
什么意思?
不好意思,忘记上传图片了
登录后可查看更多问答,登录/注册
语法精讲/配套练习+思考题/原生爬虫实战
5.7k 7
2.5k 3
2.2k 5
4.2k 22
2.3k 19