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 相关文章推荐
python3编码问题汇总
Sep 06 Python
python删除服务器文件代码示例
Feb 09 Python
对Python中的@classmethod用法详解
Apr 21 Python
Python之读取TXT文件的方法小结
Apr 27 Python
Python实现使用卷积提取图片轮廓功能示例
May 12 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
May 15 Python
Python人脸识别第三方库face_recognition接口说明文档
May 03 Python
Python列表与元组的异同详解
Jul 02 Python
Python logging设置和logger解析
Aug 28 Python
django drf框架自带的路由及最简化的视图
Sep 10 Python
Python 实现文件读写、坐标寻址、查找替换功能
Sep 11 Python
Python enumerate函数遍历数据对象组合过程解析
Dec 11 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 创建文件(文件夹)以及目录操作代码
2010/03/04 PHP
php+mysqli实现批量替换数据库表前缀的方法
2014/12/29 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
Mac环境下php操作mysql数据库的方法分享
2015/05/11 PHP
简单介绍PHP的责任链编程模式
2015/08/11 PHP
PHP 极验验证码实例讲解
2016/09/29 PHP
QUnit jQuery的TDD框架
2010/11/04 Javascript
取消选中单选框radio的三种方式示例介绍
2013/12/23 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
JavaScript常用验证函数实例汇总
2014/11/25 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
2016/06/07 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
jQuery查找节点方法完整实例
2016/09/13 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
javascript 中的继承实例详解
2017/05/05 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
移动端图片上传旋转、压缩问题的方法
2018/10/16 Javascript
一些手写JavaScript常用的函数汇总
2019/04/16 Javascript
pm2发布node配置文件ecosystem.json详解
2019/05/15 Javascript
vue实现路由懒加载及组件懒加载的方式
2019/06/11 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
2020/02/18 Python
CSS3的resize属性使用初探
2015/09/27 HTML / CSS
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
小学教师的个人自我鉴定
2013/10/26 职场文书
六一节目主持词
2014/04/01 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
植物生产学专业求职信
2014/08/08 职场文书
2015年党风廉政承诺书
2015/01/22 职场文书
嘉宾邀请函
2015/01/31 职场文书
导游词之湖州-太湖
2019/10/11 职场文书
2019年暑期法院实习报告
2019/12/18 职场文书
python周期任务调度工具Schedule使用详解
2021/11/23 Python