类中的@staticmethod
Posted 从0开始_我愿意
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类中的@staticmethod相关的知识,希望对你有一定的参考价值。
在定义一个类时,有时会定义个@staticmethod方法。该类方法,必须定义在类内,不能单独定义在类外。主要是方便将外部函数集成到类体中,美化代码结构,重点在不需要类实例化的情况下调用方法。就是不用对象调用,直接用类来调用。
例:
应用场景:编写类时需要采用很多不同的方式来创建实例,而我们只有一个__init__函数,此时静态方法就派上用场了
class Date:
def __init__(self,year,month,day):
self.year=year
self.month=month
self.day=day
@staticmethod
def now(): #用Date.now()的形式去产生实例,该实例用的是当前时间
t=time.localtime() #获取结构化的时间格式
return Date(t.tm_year,t.tm_mon,t.tm_mday) #新建实例并且返回
@staticmethod
def tomorrow():#用Date.tomorrow()的形式去产生实例,该实例用的是明天的时间
t=time.localtime(time.time()+86400)
return Date(t.tm_year,t.tm_mon,t.tm_mday)
a=Date(‘1987‘,11,27) #自己定义时间
b=Date.now() #采用当前时间
c=Date.tomorrow() #采用明天的时间
print(a.year,a.month,a.day)
print(b.year,b.month,b.day)
print(c.year,c.month,c.day)
以上是关于类中的@staticmethod的主要内容,如果未能解决你的问题,请参考以下文章
python类中的@property和@staticmethod分别有什么用,还有其他的吗?
使用 staticmethod 或 classmethod 装饰器装饰时,类中的 Python LRU 缓存忽略最大大小限制
Python类中的字段,方法,属性区别及StaticMethod, Property
TypeError:在类中使用装饰器时,“staticmethod”对象不可调用