python classmethod、staticmethod

一、class中@classmethod

       @classmethod装饰。 它的作用就是有点像静态类,比静态类不一样的就是它可以传进来一个当前类作为第一个参数。

           通俗点讲就是:第一个参数是cls的时候,classmethod能够引用当前类的函数。

class Data_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,data_as_string):
        #这里第一个参数是cls, 表示调用当前的类名
        year,month,day=map(int,string_date.split('-'))
        date1=cls(year,month,day)
        #返回的是一个初始化后的类
        return date1

    def out_date(self):
        print "year :"
        print self.year
        print "month :"
        print self.month
        print "day :"
        print self.day
r=Data_test2.get_date("2016-8-6")
r.out_date()
这样子等于先调用get_date()对字符串进行出来,然后才使用Data_test的构造函数初始化


二、class中@staticmethod
class Time():
def __init__(self,sec):
self.sec = sec
#声明一个静态方法
@staticmethod
def sec_minutes(s1,s2):
return abs(s1-s2)
t = Time(10)
#分别使用类名调用和使用实例调用静态方法
print(Time.sec_minutes(10,5),t.sec_minutes(t.sec,5))


posted on 2020-08-07 12:32  星星眨着眼  阅读(378)  评论(0编辑  收藏  举报

导航