python中的self参数

来源:互联网 发布:微博营销软件下载 编辑:程序博客网 时间:2024/05/16 09:02

当程序加载到内存开始运行时,那么函数代码会加载多份到内存吗?

# 飞机1plane1 = HeroPlane(10, 100)plane1.fly()# 飞机2plane2 = HeroPlane(15, 100)plane2.fly()

我们可以看出无论是plane1的fly()函数还是plane2()的fly()函数,是完全一样的实现,同时我们也知道计算机的内存是非常宝贵的资源,不容的大肆浪费。所以在程序设计的时候,只将函数加载到内存中一份,不同的对象共享同一个函数,如下图所示:


注意:对象的实例属性是独有的,函数代码是共享的。函数共享,就会出现一个问题,当通过对象去调用fly()函数的时候,fly()函数如何区分是那个对象调用它?答案就是self参数。

# 飞机1plane1 = HeroPlane(10, 100)plane1.fly() #  等价于 fly(plane1)# 飞机2plane2 = HeroPlane(15, 100)plane2.fly()  # 相当于fly(plane2)

所以类内的实例方法第一参数都必须是self,而且self参数是由python自动帮我传递的,我们不需要手动传递。

self的作用就是用来区分函数是由那个对象调用。

原创粉丝点击