python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python装饰器类classmethod

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的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文