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数据库9个实用实例
Dec 11 Python
python3.6连接MySQL和表的创建与删除实例代码
Dec 28 Python
python实现数据分析与建模
Jul 11 Python
将Python文件打包成.EXE可执行文件的方法
Aug 11 Python
python datetime中strptime用法详解
Aug 29 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
Nov 25 Python
代码总结Python2 和 Python3 字符串的区别
Jan 28 Python
完美解决pycharm导入自己写的py文件爆红问题
Feb 12 Python
Pandas实现一列数据分隔为两列
May 18 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
python3访问字典里的值实例方法
Nov 18 Python
python基于pygame实现飞机大作战小游戏
Nov 19 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获取从html表单传递数组的方法
2015/03/20 PHP
关于PHP内置的字符串处理函数详解
2017/02/04 PHP
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
2014/12/29 Javascript
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
2015/06/26 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
Node.js中环境变量process.env的一些事详解
2017/10/26 Javascript
Angular数据绑定机制原理
2018/04/17 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
Python 随机生成中文验证码的实例代码
2013/03/20 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
python中字符串比较使用is、==和cmp()总结
2018/03/18 Python
致Python初学者 Anaconda入门使用指南完整版
2018/04/05 Python
Python 经典面试题 21 道【不可错过】
2018/09/21 Python
使用python turtle画高达
2020/01/19 Python
Python+appium框架原生代码实现App自动化测试详解
2020/03/06 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
Alpine安装Python3依赖出现的问题及解决方法
2020/12/25 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
草莓网英国官网:Strawberrynet UK
2017/02/12 全球购物
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
六五普法规划实施方案
2014/03/21 职场文书
2014年文员工作总结
2014/11/18 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
2015年房产经纪人工作总结
2015/05/15 职场文书
投诉信格式范文
2015/07/02 职场文书
读《钢铁是怎样炼成的》有感:百炼方成钢
2019/11/05 职场文书
导游词之太原天龙山
2020/01/02 职场文书
Redis过期数据是否会被立马删除
2022/07/23 Redis