除了类属性,类还有类方法。
同样,类方法也可以通过类名直接进行使用,类方法在定义时,需要使用 @classmethod
装饰器进行修饰。
与实例方法不同的是,实例方法有一个默认参数 self
,代表当前调用方法的实例对象,而类方法的默认参数为 cls
, 该参数也是在使用时,由解释器自动传入的,但传入的对象不是实例对象,而是类对象。
在类方法中,可以通过参数 cls
使用使用类属性。
一般类方法用来封装工具类使用,将一些复杂的代码逻辑封装成类方法,由类名直接调用,不需要实例对象,比如时间处理,网络请求处理等。
需要注意的是,如果类中即定义了实例属性,又定义了类方法,那么在类方法中是不能使用实例属性的,因为在使用类方法的过程中,实例对象不存在,所以不能使用实例属性。
import datetime
class Utils:
now = datetime.datetime.now()
@classmethod
def current_date_time(cls):
return cls.now
@classmethod
def current_date(cls):
return cls.now.strftime("%Y-%m-%d")
@classmethod
def current_time(cls):
return cls.now.strftime('%H-%M-%S')
@classmethod
def getYear(cls):
return cls.now.year
@classmethod
def getMonth(cls):
return cls.now.month
@classmethod
def getDay(cls):
return cls.now.day
print(Utils.current_date_time())
print(Utils.current_date())
print(Utils.current_time())
print(Utils.getYear())
print(Utils.getMonth())
print(Utils.getDay())
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?