码迷,mamicode.com
首页 > 其他好文 > 详细

类中的@staticmethod

时间:2017-10-11 12:54:46      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:情况   不能   ffffff   重点   print   很多   美化   集成   代码结构   

在定义一个类时,有时会定义个@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

标签:情况   不能   ffffff   重点   print   很多   美化   集成   代码结构   

原文地址:http://www.cnblogs.com/gwj99/p/7641584.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!