注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

互联网产品经理的窝

梦想社:一个人为了梦想,始终没有停下自己的脚步

 
 
 

日志

 
 

菜鸟学Python - Python为什么要self  

2011-10-27 14:03:38|  分类: python |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
接触Python以来,看到类里的函数要带个self参数,一直搞不懂啥麻子原因。晚上特别针对Python的self查了一下,理理。
我也一直被困扰着~菜鸟学Python -  Python为什么要self - 梦想社 - 梦想社

Python要self的理由

Python的类的方法和普通的函数有一个很明显的区别,在类的方法必须有个额外的第一个参数 (self ),但在调用这个方法的时候不必为这个参数赋值 (显胜于隐 的引发)。Python的类的方法的这个特别的参数指代的是对象本身,而按照Python的惯例,它用self来表示。(当然我们也可以用其他任何名称来代替,只是规范和标准在那建议我们一致使用self)

为何Python给self赋值而你不必给self赋值?

例子说明:创建了一个类MyClass,实例化MyClass得到了MyObject这个对象,然后调用这个对象的方法MyObject.method(arg1,arg2) ,这个过程中,Python会自动转为Myclass.mehod(MyObject,arg1,arg2)

这就是Python的self的原理了。即使你的类的方法不需要任何参数,但还是得给这个方法定义一个self参数,虽然我们在实例化调用的时候不用理会这个参数不用给它赋值。

这是个实例:
菜鸟学Python -  Python为什么要self - 梦想社 - 梦想社

把p.selfDemo()带个参数如:p.selfDemo(p),得到同样的输出结果。

如果把self去掉的话,

菜鸟学Python -  Python为什么要self - 梦想社 - 梦想社

这个错误是不是很熟习?

 

扩展

self在Python里不是关键字。self代表当前对象的地址,self能避免非限定调用造成的全局变量。

在Python3之后,self是否成为了关键字?还是去查查Python手册吧~

菜鸟学Python -  Python为什么要self - 梦想社 - 梦想社

Self - 总是加在类方法中,怎么那么啰嗦呢?


 
  评论这张
 
阅读(182)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017