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 相关文章推荐
仅利用30行Python代码来展示X算法
Apr 01 Python
深入Python函数编程的一些特性
Apr 13 Python
Python文件夹与文件的相关操作(推荐)
Jul 25 Python
python实现单向链表详解
Feb 08 Python
详解python中的装饰器
Jul 10 Python
JavaScript中的模拟事件和自定义事件实例分析
Jul 27 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
Python+PyQt5实现美剧爬虫可视工具的方法
Apr 25 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
Aug 31 Python
关于初始种子自动选取的区域生长实例(python+opencv)
Jan 16 Python
Python sys模块常用方法解析
Feb 20 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
Jan 27 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
星际争霸任务指南——人族
2020/03/04 星际争霸
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
JavaScript中的闭包原理分析
2010/03/08 Javascript
javascript 四则运算精度修正函数代码
2010/05/31 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
jQuery匹配文档链接并添加class的方法
2015/06/26 Javascript
jQuery设置Cookie及删除Cookie实例分析
2016/04/15 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
利用require.js与angular搭建spa应用的方法实例
2017/07/19 Javascript
vue编译打包本地查看index文件的方法
2018/02/23 Javascript
[58:37]Serenity vs Fnatic 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
[01:16]DOTA2小知识课堂 Ep.03 芒果树无伤肉山
2019/12/05 DOTA
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
Python Queue模块详解
2014/11/30 Python
Python面向对象编程基础解析(二)
2017/10/26 Python
python距离测量的方法
2018/03/06 Python
python paramiko利用sftp上传目录到远程的实例
2019/01/03 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
python多进程并发demo实例解析
2019/12/13 Python
python3.7+selenium模拟淘宝登录功能的实现
2020/05/26 Python
Python和Bash结合在一起的方法
2020/11/13 Python
Canvas图片分割效果的实现
2019/07/29 HTML / CSS
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
英国标准协会商店:BSI Shop
2019/02/25 全球购物
C#中有没有静态构造函数,如果有是做什么用的?
2016/06/04 面试题
酒吧员工的岗位职责
2013/11/26 职场文书
四年的个人工作自我评价
2013/12/10 职场文书
饮料业务员岗位职责
2013/12/15 职场文书
初中家长寄语
2014/04/02 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
2019年市场部个人述职报告(三篇)
2019/10/23 职场文书