Python绑定方法与非绑定方法详解


Posted in Python onAugust 18, 2017

本文实例为大家分享了Python绑定方法与非绑定方法,供大家参考,具体内容如下

定义:

绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入):

1. 绑定到类的方法:用classmethod装饰器装饰的方法。

                为类量身定制

                类.boud_method(),自动将类当作第一个参数传入

              (其实对象也可调用,但仍将类当作第一个参数传入)

2. 绑定到对象的方法:没有被任何装饰器装饰的方法。

               为对象量身定制

               对象.boud_method(),自动将对象当作第一个参数传入

             (属于类的函数,类可以调用,但是必须按照函数的规则来,没有自动传值那么一说)

非绑定方法:用staticmethod装饰器装饰的方法

       不与类或对象绑定,类和对象都可以调用,但是没有自动传值那么一说。就是一个普通工具而已

注意:与绑定到对象方法区分开,在类中直接定义的函数,没有被任何装饰器装饰的,都是绑定到对象的方法,可不是普通函数,对象调用该方法会自动传值,而staticmethod装饰的方法,不管谁来调用,都没有自动传值一说

二、绑定方法

绑定给对象的方法(略)

绑定给类的方法(classmethod)

classmehtod是给类用的,即绑定到类,类在使用时会将类本身当做参数传给类方法的第一个参数(即便是对象来调用也会将类当作第一个参数传入),python为我们内置了函数classmethod来把类中的函数定义成类方法

import settings
class MySQL:
 def __init__(self,host,port):
  self.host=host
  self.port=port

 @classmethod
 def from_conf(cls):
  print(cls)
  return cls(settings.HOST,settings.PORT)

print(MySQL.from_conf) #<bound method MySQL.from_conf of <class '__main__.MySQL'>>
conn=MySQL.from_conf()

conn.from_conf() #对象也可以调用,但是默认传的第一个参数仍然是类

三、非绑定方法

在类内部用staticmethod装饰的函数即非绑定方法,就是普通函数

statimethod不与类或对象绑定,谁都可以调用,没有自动传值效果

import hashlib
import time
class MySQL:
 def __init__(self,host,port):
  self.id=self.create_id()
  self.host=host
  self.port=port
 @staticmethod
 def create_id(): #就是一个普通工具
  m=hashlib.md5(str(time.time()).encode('utf-8'))
  return m.hexdigest()


print(MySQL.create_id) #<function MySQL.create_id at 0x0000000001E6B9D8> #查看结果为普通函数
conn=MySQL('127.0.0.1',3306)
print(conn.create_id) #<function MySQL.create_id at 0x00000000026FB9D8> #查看结果为普通函数

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python连接mysql数据库示例(做增删改操作)
Dec 31 Python
python实现定时同步本机与北京时间的方法
Mar 24 Python
快速解决安装python没有scripts文件夹的问题
Apr 03 Python
python实现远程控制电脑
May 23 Python
python如何制作英文字典
Jun 25 Python
python中下标和切片的使用方法解析
Aug 27 Python
基于Python和PyYAML读取yaml配置文件数据
Jan 13 Python
Python timeit模块原理及使用方法
Oct 10 Python
jupyter 添加不同内核的操作
Feb 06 Python
如何用python插入独创性声明
Mar 31 Python
pytorch--之halfTensor的使用详解
May 24 Python
python 中的@运算符使用
May 26 Python
python字典DICT类型合并详解
Aug 17 #Python
Python时间的精准正则匹配方法分析
Aug 17 #Python
Python实现运行其他程序的四种方式实例分析
Aug 17 #Python
python进阶_浅谈面向对象进阶
Aug 17 #Python
Python 比较两个数组的元素的异同方法
Aug 17 #Python
python使用opencv读取图片的实例
Aug 17 #Python
CentOS下使用yum安装python-pip失败的完美解决方法
Aug 16 #Python
You might like
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
javascript动态改变img的src属性图片不显示的解决方法
2010/10/20 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
javascript事件模型实例分析
2015/01/30 Javascript
js正则匹配出所有图片及图片地址src的方法
2015/06/08 Javascript
基于jQuery实现动态数字展示效果
2015/08/12 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
浅谈javascript中的constructor
2016/06/08 Javascript
DIV+CSS+jQ实现省市联动可扩展
2016/06/22 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
Web安全之XSS攻击与防御小结
2018/12/13 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
2019/05/22 Javascript
vue实现顶部菜单栏
2020/11/08 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
[01:50]《我与DAC》之玩家:iG夺冠时的那面红旗
2018/03/29 DOTA
pycharm 使用心得(七)一些实用功能介绍
2014/06/06 Python
Python测试人员需要掌握的知识
2018/02/08 Python
python opencv之SIFT算法示例
2018/02/24 Python
python XlsxWriter模块创建aexcel表格的实例讲解
2018/05/03 Python
Python之文字转图片方法
2018/05/10 Python
python 图片去噪的方法示例
2019/07/09 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
Python自动重新加载模块详解(autoreload module)
2020/04/01 Python
python 已知平行四边形三个点,求第四个点的案例
2020/04/12 Python
HTML5网页音乐播放器的示例代码
2017/11/09 HTML / CSS
苏格兰在线威士忌商店:The Whisky Barrel
2019/05/07 全球购物
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
巴西独家产品和现场演示购物网站:Shoptime
2019/07/11 全球购物
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
超市督导岗位职责
2015/04/10 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
公诉意见书范文
2015/06/05 职场文书