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二叉树遍历的实现方法
Nov 21 Python
python微信跳一跳系列之棋子定位颜色识别
Feb 26 Python
使用 Python 实现简单的 switch/case 语句的方法
Sep 17 Python
使用python将图片格式转换为ico格式的示例
Oct 22 Python
用python脚本24小时刷浏览器的访问量方法
Dec 07 Python
Python Django切换MySQL数据库实例详解
Jul 16 Python
在tensorflow中设置使用某一块GPU、多GPU、CPU的操作
Feb 07 Python
python 实现在shell窗口中编写print不向屏幕输出
Feb 19 Python
python实现门限回归方式
Feb 29 Python
Python中有几个关键字
Jun 04 Python
深入了解NumPy 高级索引
Jul 24 Python
删除pycharm鼠标右键快捷键打开项目的操作
Jan 16 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定时任务延缓执行的实现
2014/10/08 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
PHP实现八皇后算法
2019/05/06 PHP
CheckBox 如何实现全选?
2006/06/23 Javascript
javascript onmouseout 解决办法
2010/07/17 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
jQuery实现点击该行即可删除HTML表格行
2014/10/17 Javascript
深入分析JSONP跨域的原理
2014/12/10 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
详解JS获取HTML DOM元素的8种方法
2017/06/17 Javascript
Vue filter介绍及其使用详解
2017/10/21 Javascript
Vue2 SSR渲染根据不同页面修改 meta
2017/11/20 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
vue $set 给数据赋值的实例
2019/11/09 Javascript
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Django中对数据查询结果进行排序的方法
2015/07/17 Python
python3制作捧腹网段子页爬虫
2017/02/12 Python
Python tornado队列示例-一个并发web爬虫代码分享
2018/01/09 Python
django用户注册、登录、注销和用户扩展的示例
2018/03/19 Python
在Python中使用filter去除列表中值为假及空字符串的例子
2019/11/18 Python
python super函数使用方法详解
2020/02/14 Python
Python实现汇率转换操作
2020/05/03 Python
Pandas的Apply函数具体使用
2020/07/21 Python
使用Python实现音频双通道分离
2020/12/25 Python
合作协议书怎么写
2014/04/18 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
考试没考好检讨书(精选篇)
2014/11/16 职场文书
医务人员医德考评自我评价
2015/03/03 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
创业计划书之花店
2019/09/20 职场文书
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript