python基础-内置装饰器classmethod和staticmethod
面向对象编程之classmethod和staticmethod
classmethod 和 staticmethod都是python内置的装饰器
classmethod 的作用:给在类内部定义的方法装饰,将类的内部方法变为类的绑定方法
绑定方法的特殊之处是会将对象本省当作第一个参数传入方法中
类的绑定方法:由类来调用,哪个类调用,就默认将哪个类当作第一个参数传入
class DB:
__data = "lee is a big haha!"
def __init__(self, user, pwd):
self.user = user
self.pwd = pwd
# 查看数据方法
# 使用classmethod装饰器 让DB类直接调用check_db()
@classmethod
def check_db(cls, user, pwd):
if user == "dawn" and pwd == "123":
print("校验通过……")
print(cls.__data)
# 一般都是通过创建对象,通过对象.方法() 调用方法
db_obj = DB("lee", "123")
db_obj.check_db("dawn", "123") # 输出结果:校验通过…… lee is a big haha!
# 给类中的check_db()加上classmethod 装饰,让类直接调用看看
DB.check_db("dawn", "123") # 输出结果:校验通过…… lee is a big haha!
staticmethod 的作用:给在类内部定义方法中装饰,将类内部的方法变为非绑定方法
非绑定方法:可以由类或对象来调用。不论是谁调用,方法中有几个参数,就要传入几个传参,跟调用函数的方式一样。
class Demo:
@staticmethod
def func(self):
print(self)
# 创建对象调用func
demo = Demo()
# 理论上,不用传参,但不传参就报错
demo.func(1234) # 输出结果:1234
# 通过类调用func
# 理论上,不用传参,但不传参就报错
Demo.func(2345) # 输出结果:2345
总结:
对象的绑定方法
- 由对象来调用,会将对象当做第一个参数传入给该方法。
- 实现:在类内部定义(封装)一个方法即可
类的绑定方法
- 由类来调用,会将类当做第一个参数传入给该方法。
- 实现:在类内部方法中,使用classmethod装饰器即可
非绑定方法
- 由对象/类来调用,由谁来调用,它都是一个普通函数,内部需要接受几个参数,就得传入几个。
- 实现:在类内部方法中,使用staticmethod装饰器即可
python基础-内置装饰器classmethod和staticmethod的更多相关文章
- python基础之内置装饰器
装饰器 简介 功能与格式 内置装饰器 @classmethod @propertry @staticmethod 其它 ---------------------------------------- ...
- python内置装饰器
前言 接着上一篇笔记,我们来看看内置装饰器property.staticmethod.classmethod 一.property装饰器 1. 普通方式修改属性值 code class Celsius ...
- python基础语法16 面向对象3 组合,封装,访问限制机制,内置装饰器property
组合: 夺命三问: 1.什么是组合? 组合指的是一个对象中,包含另一个或多个对象. 2.为什么要用组合? 减少代码的冗余. 3.如何使用组合? 耦合度: 耦: 莲藕 ---> 藕断丝连 - 耦合 ...
- python进阶04 装饰器、描述器、常用内置装饰器
python进阶04 装饰器.描述器.常用内置装饰器 一.装饰器 作用:能够给现有的函数增加功能 如何给一个现有的函数增加执行计数的功能 首先用类来添加新功能 def fun(): #首先我们定义一个 ...
- classmethod、staticclassmethod内置装饰器函数
# method 英文是方法的意思 # classmethod 类方法 # 当一个类中的方法中只涉及操作类的静态属性时,此时在逻辑上,我们想要直接通过类名就可以调用这个方法去修改类的静态属性,此时可以 ...
- python设计模式之内置装饰器使用(四)
前言 python内部有许多内建装饰器,它们都有特别的功能,下面对其归纳一下. 系列文章 python设计模式之单例模式(一) python设计模式之常用创建模式总结(二) python设计模式之装饰 ...
- python基础——内置函数
python基础--内置函数 一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...
- property内置装饰器函数和@name.setter、@name.deleter
# property # 内置装饰器函数 只在面向对象中使用 # 装饰后效果:将类的方法伪装成属性 # 被property装饰后的方法,不能带除了self外的任何参数 from math import ...
- python基础-内置函数详解
一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highlight=built#ascii ...
随机推荐
- mysql操作篇续
# ### part1. 数据类型 - 时间date YYYY-MM-DD 年月日 (纪念日)time HH:MM:SS 时分秒 (体育竞赛)year YYYY 年份值 (酒的年份,82年拉菲)dat ...
- 渗透测试学习 二十三、常见cms拿shell
常见cms 良精.科讯.动易.aspcms.dz 米拓cms.phpcms2008.帝国cms.phpv9 phpweb.dedecms 良精 方法: 1.数据库备份拿shell 上传图片——点击数据 ...
- fiddler---Fiddler弱网测试
无论是做web端还是app端的测试,我们都需要对弱网进行测试,对于弱网方法有很多种,如:Fiddler模拟弱网,控制电脑的网速等,今天介绍下Fiddler如何进行测试弱网 什么是弱网 弱网看字面意思就 ...
- nginx 图片访问404 (使用location中使用 root,alias的区别)
问题描述: 在/data/code_img/文件下有很多验证码图片,想将他们展示出来 希望通过 http://127.0.0.1/img/1.png 这种形式访问到对应图片,刚开始nginx中配置如下 ...
- Appium 解决微信公众号、小程序切换 webview 后无法定位元素的问题
如何切换webview进入小程序请参考https://testerhome.com/topics/12003 脚本思路:进入webview后会存在多个handle同Web页签一样,获取所有的handl ...
- linux下如何查看自己都装了什么服务
service --status-all 先把rabbitmq进程杀掉 ps -ef | grep rabbitmq | grep -v grep | awk '{print $2}' | xargs ...
- Zuul中聚合Swagger的坑
每个服务都有自己的接口,通过Swagger来管理接口文档.在服务较多的时候我们希望有一个统一的入口来进行文档的查看,这个时候可以在zuul中进行文档的聚合显示. 下面来看下具体的整合步骤以及采坑记录. ...
- iOS Workflow 分享 - Scan QR Code
很多时候我们无意识地用微信扫描一个 QR Code,然后无论打开的是什么我们用就是了.我经常会好奇到底 QR Code 编码的是什么信息,到底是一个 ID 呢,还是一个 URL(可能是 deeplin ...
- telnet: Unable to connect to remote host: Connection refused
问题描述: telnet: Unable to connect to remote host: Connection refused 已解决,需要安装telent 服务,请查看下方的链接文章: htt ...
- pytest 常见用法
前言 之前一篇文章简单介绍了 pytest 以及 fixture :https://www.cnblogs.com/shenh/p/11572657.html .实际在写自动化测试脚本中,还会有一些很 ...