Python中绑定与未绑定的类方法用法分析


Posted in Python onApril 29, 2016

本文实例讲述了Python中绑定与未绑定的类方法。分享给大家供大家参考,具体如下:

像函数一样,Python中的类方法也是一种对象。由于既可以通过实例也可以通过类来访问方法,所以在Python里有两种风格:

未绑定的类方法:没有self

通过类来引用方法返回一个未绑定方法对象。要调用它,你必须显示地提供一个实例作为第一个参数。

绑定的实例方法:有self

通过实例访问方法返回一个绑定的方法对象。Python自动地给方法绑定一个实例,所以我们调用它时不用再传一个实例参数。

两种方法都是对象,它们可以被传递、存入列表等待。两者运行时都需要一个实例作为第一参数(妤一个self值),但当通过一个实例调用一个绑定方法时Python自动会提供一个。例如我们运行如下的代码:

class Test:
  def func(self,message):
    print message
object1=Test()
x=object1.func
x('绑定方法对象,实例是隐含的')
t=Test.func
t(object1,'未绑定的方法对象,需要传递一个实例') 
#t('未绑定的方法对象,需要传递一个实例') #错误的调用

object1=Test()生成一个实例,object1.func返回一个绑定的方法,把实例object1和方法func绑定。

而Test.func是用类去引用方法,我们得到一个未绑定的方法对象。要调用它就得传一个实例参数,如t(object1,'未绑定的方法对象,需要传递一个实例') 。

大多数时候,我们都直接调用方法,所以一般不会注意到方法对象。但是如果开始写通用的调用对象的代码时,需要特别仔细地注意未绑定方法,它们需要地传一个实例参数。

更多关于Python相关内容可查看本站专题:《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

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

Python 相关文章推荐
粗略分析Python中的内存泄漏
Apr 23 Python
python的unittest测试类代码实例
Dec 07 Python
详解Django中六个常用的自定义装饰器
Jul 04 Python
selenium+python实现自动化登录的方法
Sep 04 Python
Python3 使用pillow库生成随机验证码
Aug 26 Python
python:动态路由的Flask程序代码
Nov 22 Python
python 错误处理 assert详解
Apr 20 Python
Python Django form 组件动态从数据库取choices数据实例
May 19 Python
Python坐标轴操作及设置代码实例
Jun 04 Python
如何基于python把文字图片写入word文档
Jul 31 Python
python 多线程共享全局变量的优劣
Sep 24 Python
使用Python webdriver图书馆抢座自动预约的正确方法
Mar 04 Python
Python过滤列表用法实例分析
Apr 29 #Python
Python松散正则表达式用法分析
Apr 29 #Python
python中私有函数调用方法解密
Apr 29 #Python
简单学习Python time模块
Apr 29 #Python
Python中MySQL数据迁移到MongoDB脚本的方法
Apr 28 #Python
python遍历目录的方法小结
Apr 28 #Python
Python网络爬虫实例讲解
Apr 28 #Python
You might like
php中截取中文字符串的代码小结
2011/07/17 PHP
ThinkPHP实现的rsa非对称加密类示例
2018/05/29 PHP
php实现记事本案例
2020/10/20 PHP
用js实现上传图片前的预览(TX的面试题)
2007/08/14 Javascript
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
在页面中js获取光标/鼠标的坐标及光标的像素坐标
2013/11/11 Javascript
跟我学习javascript的作用域与作用域链
2015/11/19 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
2016/06/12 Javascript
JS随机打乱数组的方法小结
2016/06/22 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
jQuery实现的文字逐行向上间歇滚动效果示例
2017/09/06 jQuery
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
JavaScript的查询机制LHS和RHS解析
2019/08/16 Javascript
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
JS如何生成动态列表
2020/09/22 Javascript
Python中处理时间的几种方法小结
2015/04/09 Python
Python实现完整的事务操作示例
2017/06/20 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
使用Python将Exception异常错误堆栈信息写入日志文件
2020/04/08 Python
html5 canvas绘制矩形和圆形的实例代码
2016/06/16 HTML / CSS
Rossignol金鸡美国官网:始于1907年法国百年雪具品牌
2019/03/06 全球购物
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
Kate Spade澳大利亚官方网站:美国设计师手袋品牌
2019/09/10 全球购物
.NET面试问题集
2015/12/08 面试题
医科学校毕业生自荐信
2013/11/09 职场文书
大学生实习自我鉴定
2013/12/11 职场文书
室内设计专业毕业生求职信
2014/05/02 职场文书
宣传活动总结范文
2014/07/01 职场文书
525心理活动总结
2014/07/04 职场文书
2014年小学国庆节活动方案
2014/09/16 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python