python中self原理实例分析


Posted in Python onApril 30, 2015

本文实例讲述了python中self原理。分享给大家供大家参考。具体分析如下:

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。

假如你有一个类称为MyClass和这个类的一个实例MyObject。当你调用这个对象的方法 MyObject.method(arg1, arg2) 的时候,这会由Python自动转为 MyClass.method(MyObject, arg1, arg2)——这就是self的原理了。

这也意味着如果你有一个不需要参数的方法,你还是得给这个方法定义一个self参数。

示例程序:

>>> class P:
...   def selfDemo(self):
...       print 'Python, why self?'
...
...
>>> p = P()
>>> p.selfDemo()
Python, why self?
>>>

将selfDemo()中参数换为其他,如selfDemo(x),输出同样结果。

若不加参数,则报错:

>>> class P:
...   def selfDemo(): # have no arguments
...       print 'Python, why self?'
...
...
>>> p = P()
>>> p.selfDemo()
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: selfDemo() takes no arguments (1 given)
>>>

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python socket.error: [Errno 98] Address already in use的原因和解决方法
Aug 25 Python
Python类属性与实例属性用法分析
May 09 Python
python获得一个月有多少天的方法
Jun 04 Python
python语言使用技巧分享
May 31 Python
Python运维自动化之nginx配置文件对比操作示例
Aug 29 Python
浅谈Python 列表字典赋值的陷阱
Jan 20 Python
Python3多目标赋值及共享引用注意事项
May 27 Python
python 实现简单的FTP程序
Dec 27 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
python3发送request请求及查看返回结果实例
Apr 30 Python
利用python对mysql表做全局模糊搜索并分页实例
Jul 12 Python
Python re.sub 反向引用的实现
Jul 07 Python
部署Python的框架下的web app的详细教程
Apr 30 #Python
python实现清屏的方法
Apr 30 #Python
Python中类的定义、继承及使用对象实例详解
Apr 30 #Python
python中global用法实例分析
Apr 30 #Python
python中as用法实例分析
Apr 30 #Python
python中pass语句用法实例分析
Apr 30 #Python
python中assert用法实例分析
Apr 30 #Python
You might like
php 三维饼图的实现代码
2008/09/28 PHP
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
中高级PHP程序员应该掌握哪些技术?
2016/09/23 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
js继承call()和apply()方法总结
2014/12/08 Javascript
学习JavaScript设计模式(多态)
2015/11/25 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
利用Javascript实现简单的转盘抽奖
2017/02/13 Javascript
NodeJS链接MySql数据库的操作方法
2017/06/27 NodeJs
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
浅谈JavaScript闭包
2019/04/09 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
Python程序中使用SQLAlchemy时出现乱码的解决方案
2015/04/24 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
2019/01/26 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
Python 防止死锁的方法
2020/07/29 Python
8种常用的Python工具
2020/08/05 Python
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
医学检验专业个人求职信范文
2013/12/04 职场文书
运动会领导邀请函
2014/01/10 职场文书
全陪导游欢迎词
2014/01/17 职场文书
2014年元旦促销活动方案
2014/02/22 职场文书
入党函调证明材料
2014/12/24 职场文书
学期个人自我总结
2015/02/13 职场文书
opencv检测动态物体的实现
2021/07/21 Python
Golang 实现 WebSockets 之创建 WebSockets
2022/04/24 Golang
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers