本文实例讲述了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程序设计有所帮助。
相关推荐:
Flex 实现可以拖动的毛玻璃效果
php 魔术方法使用说明
javascript 表单中浏览文件的“浏览”按钮修改
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
Aspx/Asp.net 防注入程序 V1.0
防盗链接ASP函数
睡五分钟等于六钟头的方法(熬夜站长必看)
学习ExtJS border布局
jquery.ui.draggable中文文档
用户"sa"登陆失败 SQLServer 错误18456的解决方法
IE,firefox(火狐)浏览器无提示关闭窗口js实现代码小结
js表格分页实现代码
php后台程序与Javascript的两种交互方式
vbs 合并多个excel文件的脚本
IIS6.0 silverlight网站部署方法
担起净化网络环境责任 IDC行业在发展中成长
php 调用远程url的六种方法小结
IE FF OPERA都可用的弹出层实现代码
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
Mootools 1.2教程 同时进行多个形变动画
asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别
Javascript 两个窗体之间传值实现代码
JSP application(return String)用法详例
Js 实现表格隔行换色一例
asp.net url重写后页面回传问题
asp.net coolite 删除时弹出确定按钮
JavaScript中Object和Function的关系小结
JavaScript 复制功能代码 兼容多浏览器
JavaScript switch case 的用法实例[范围]
asp.net cookie的读写实例
为javascript添加String.Format方法
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
asp.net中url地址传送中文参数时的两种解决方案
javascript 面向对象,实现namespace,class,继承,重载
ASP程序与SQL存储过程结合使用详解
配置IIS服务器 支持sis下载等
管理员需要参考的当服务器被入侵后的紧急补救方法
.net 动态标题实现方法
FCKEditor网页编辑器 几点使用心得
php面向对象全攻略 (十) final static const关键字的使用
asp.net sql存储过程
PHP 字符串分割和比较
jQuery 使用手册(三)
asp.net 实现动态显示当前时间(不用javascript不考虑开销)
5款Ajax 文件上传控件
js window.onload 加载多个函数的方法
asp.net 图片的读写入库实现代码
javascript 走马灯效果的链接提示
asp 实现的冒泡排序程序
javascript String split方法误操作