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 version 2.7 required, which was not found in the registry
Aug 26 Python
Python使用爬虫猜密码
Feb 19 Python
Python找出最小的K个数实例代码
Jan 04 Python
python操作mysql代码总结
Jun 01 Python
解决Tensorflow使用pip安装后没有model目录的问题
Jun 13 Python
python爬虫之自动登录与验证码识别
Jun 15 Python
华为校园招聘上机笔试题 扑克牌大小(python)
Apr 22 Python
python3中eval函数用法使用简介
Aug 02 Python
关于pytorch中网络loss传播和参数更新的理解
Aug 20 Python
Django中提示消息messages的设置方式
Nov 15 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
Jan 15 Python
Python 窗体(tkinter)下拉列表框(Combobox)实例
Mar 04 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中常见数据类型的汇总分享
2014/01/06 PHP
PHP生成条形图的方法
2014/12/10 PHP
Thinkphp无限级分类代码
2015/11/11 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
JavaScript While 循环基础教程
2007/04/05 Javascript
javascript 二进制运算技巧解析
2012/11/27 Javascript
struts2+jquery+json实现异步加载数据(自写)
2013/06/24 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
2014/08/08 Javascript
你所不了解的javascript操作DOM的细节知识点(一)
2015/06/17 Javascript
使用AngularJS编写较为优美的JavaScript代码指南
2015/06/19 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
2018/09/18 Javascript
vue-cli3.0 环境变量与模式配置方法
2018/11/08 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
在VUE style中使用data中的变量的方法
2020/06/19 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
python简单文本处理的方法
2015/07/10 Python
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
2018/06/28 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
Python下简易的单例模式详解
2019/04/08 Python
Python求均值,方差,标准差的实例
2019/06/29 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
使用python 的matplotlib 画轨道实例
2020/01/19 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
Python基于httpx模块实现发送请求
2020/07/07 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
CSS3中Animation属性的使用详解
2015/08/06 HTML / CSS
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
工程技术员岗位职责
2014/03/02 职场文书
详解Vue的sync修饰符
2021/05/15 Vue.js
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫
Pycharm远程调试和MySQL数据库授权问题
2022/03/18 MySQL