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和C语言混合编程实例
Jun 04 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
Python中shutil模块的常用文件操作函数用法示例
Jul 05 Python
详解python之简单主机批量管理工具
Jan 27 Python
Django原生sql也能使用Paginator分页的示例代码
Nov 15 Python
基于PyQt4和PySide实现输入对话框效果
Feb 27 Python
Python网络爬虫之爬取微博热搜
Apr 18 Python
python开发之anaconda以及win7下安装gensim的方法
Jul 05 Python
Python sep参数使用方法详解
Feb 12 Python
使用sklearn对多分类的每个类别进行指标评价操作
Jun 11 Python
用python写爬虫简单吗
Jul 28 Python
详解Python高阶函数
Aug 15 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
关于PHP中操作MySQL数据库的一些要注意的问题
2006/10/09 PHP
PHP安全配置
2006/10/09 PHP
Smarty安装配置方法
2008/04/10 PHP
PHP 微信支付类 demo
2015/11/30 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
关于jquery input textare 事件绑定及用法学习
2013/04/03 Javascript
JavaScript判断密码强度(自写代码)
2013/09/06 Javascript
原生JS绑定滑轮滚动事件兼容常见浏览器
2014/06/30 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
基于jQuery的checkbox全选问题分析
2016/11/18 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
vue-router跳转时打开新页面的两种方法
2019/07/29 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
js实现拖动缓动效果
2020/01/13 Javascript
ES5和ES6中类的区别总结
2020/12/21 Javascript
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
Python实现的线性回归算法示例【附csv文件下载】
2018/12/29 Python
Python3 log10()函数简单用法
2019/02/19 Python
python多线程并发实例及其优化
2019/06/27 Python
python绘制分布折线图的示例
2020/09/24 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
2021/02/18 Python
canvas绘制树形结构可视图形的实现
2020/04/03 HTML / CSS
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
员工自我鉴定范文
2013/10/06 职场文书
2014普法依法治理工作总结
2014/12/18 职场文书
辞职信模板(中英文版)
2015/02/27 职场文书
运动会入场词
2015/07/18 职场文书
Python中for后接else的语法使用
2021/05/18 Python
一起来学习Python的元组和列表
2022/03/13 Python