python装饰器类方法classmethod的使用场景
作者:软件开发技术修炼
这篇文章主要为大家介绍了python装饰器类方法classmethod的使用场景,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
【ps: 最近遇到的@classmethod比较多,故温故下其用法,一篇例子足以了解】
功能:讲解 @classmethod的使用
1、类中创建一个成员函数,用@classmethod装饰,作用类似静态类,但不一样的是可传递类参数;
2、调用方法:先用函数对字符串进行处理,再使用Date_test2类的构造函数初始化;
3、好处是:重构类时,不必修改构造函数,只需额外添加要处理的函数即可,然后使用装饰符@classmethod
@classmethod机制,可用一种与构造器相仿的方式来构造类的对象
# -*- coding: utf-8 -*- ''' @Time : 2023/6/12 11:36 @Author : Celeste @File : classmethod_.py ''' class Date_test2(object): day = 0 month = 0 year = 0 def __init__(self, year=0, month=0, day=0): self.day = day self.month = month self.year = year @classmethod def get_date(cls, string_date): # 这里第一个参数是cls,表示调用当前的类名 year, month, day = map(int, string_date.split('-')) date1 = cls(year, month, day) # 返回的是一个初始化后的类 return date1 def out_date(self): print("year :", self.year) print("month :", self.month) print("day :", self.day) t = Date_test2(2020,3,6) t.out_date() r = Date_test2.get_date("2023-6-12") r.out_date()
本场景可看到的好处:
1、将处理的函数统一放入类中,使代码更加简洁
2、可以同时支持两种输入格式。
a:“2019,10,26”,
b:“2019-10-26”
3、使代码更加容易维护
类方法与静态方法@staticmethod的区别及使用场景
一般情况下,我们的类方法,和静态方法多出现在工具类中,也就是不需要创建对象就可以调用的方法。
类方法:在方法中只使用类属性和类方法时,我们使用类方法。
静态方法:当方法中,既不是用类的属性和方法,也不适用实例的属性和方法时,我们使用静态方法。
类方法的应用范围比静态方法的使用场景要多一些,如果实在拿不定注意,就先写类方法, 如果发现cls参数并没有被使用,那么我们就可以切换为静态方法了。
以上就是python装饰器类方法classmethod的使用场景的详细内容,更多关于python装饰器类classmethod的资料请关注脚本之家其它相关文章!