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判断给定的字符串是否是有效日期的方法
May 13 Python
python选择排序算法实例总结
Jul 01 Python
Python基于jieba库进行简单分词及词云功能实现方法
Jun 16 Python
windows下numpy下载与安装图文教程
Apr 02 Python
python 用所有标点符号分隔句子的示例
Jul 15 Python
将Pytorch模型从CPU转换成GPU的实现方法
Aug 19 Python
Python内置类型性能分析过程实例
Jan 29 Python
Django之富文本(获取内容,设置内容方式)
May 21 Python
Python实现爬取并分析电商评论
Jun 19 Python
win10安装python3.6的常见问题
Jul 01 Python
一篇文章搞懂python的转义字符及用法
Sep 03 Python
用Python制作灯光秀短视频的思路详解
Apr 13 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 购物车的例子
2009/05/04 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
2016/04/20 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
2016/10/14 PHP
JavaScript While 循环基础教程
2007/04/05 Javascript
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
JavaScript 对象链式操作测试代码
2010/04/25 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
2013/11/29 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
JavaScript获取按钮所在form表单id的方法
2015/04/02 Javascript
JavaScript中window.open用法实例详解
2015/04/15 Javascript
最丑的时钟效果!js canvas时钟制作方法
2016/08/15 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
2018/01/06 jQuery
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
js实现登录时记住密码的方法分析
2020/04/05 Javascript
javascript canvas时钟模拟器
2020/07/13 Javascript
js实现石头剪刀布游戏
2020/10/11 Javascript
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
Python实现发送QQ邮件的封装
2017/07/14 Python
python的构建工具setup.py的方法使用示例
2017/10/23 Python
对Python 3.2 迭代器的next函数实例讲解
2018/10/18 Python
python 实现倒排索引的方法
2018/12/25 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
基于python实现操作git过程代码解析
2020/07/27 Python
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
PHP两种查询函数array/row的区别
2013/06/03 面试题
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
服装设计专业求职信
2014/06/16 职场文书
2015年环卫处个人工作总结
2015/07/27 职场文书
XX部保密工作制度范本
2019/08/27 职场文书
Python机器学习之KNN近邻算法
2021/05/14 Python
JUnit5常用注解的使用
2021/07/02 Java/Android