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 自动提交和抓取网页
Jul 13 Python
Python的组合模式与责任链模式编程示例
Feb 02 Python
Python使用multiprocessing实现一个最简单的分布式作业调度系统
Mar 14 Python
Python并发编程协程(Coroutine)之Gevent详解
Dec 27 Python
Python爬取数据并写入MySQL数据库的实例
Jun 21 Python
python实现定时提取实时日志程序
Jun 22 Python
Python之list对应元素求和的方法
Jun 28 Python
Python 给屏幕打印信息加上颜色的实现方法
Apr 24 Python
python文字转语音的实例代码分析
Nov 12 Python
python读取tif图片时保留其16bit的编码格式实例
Jan 13 Python
Python tkinter和exe打包的方法
Feb 05 Python
Python如何使用队列方式实现多线程爬虫
May 12 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异步调用socket实现代码
2012/01/12 PHP
记录PHP错误日志 display_errors与log_errors的区别
2012/10/09 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
2013/07/01 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
用循环或if语句从json中取数据示例
2014/08/18 Javascript
node.js中的querystring.parse方法使用说明
2014/12/10 Javascript
JavaScript基于ajax编辑信息用法实例
2015/07/15 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
基于VUE的v-charts的曲线显示功能
2019/10/01 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
解决matplotlib库show()方法不显示图片的问题
2018/05/24 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
Python编写打字训练小程序
2019/09/26 Python
Python实现扫码工具的示例代码
2020/10/09 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
C语言笔试集
2012/07/24 面试题
几个Shell Script面试题
2014/04/18 面试题
店长岗位的工作内容
2013/11/12 职场文书
餐饮业创业计划书范文
2014/01/06 职场文书
安全检查与奖惩制度
2014/01/23 职场文书
关于期中考试的反思
2014/02/02 职场文书
无偿献血倡议书
2014/04/14 职场文书
2014年汽车销售工作总结
2014/12/01 职场文书
CSS实现多个元素在盒子内两端对齐效果
2021/03/30 HTML / CSS
Python文件的操作示例的详细讲解
2021/04/08 Python
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python