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))
---当才华撑不起你的野心的时候,请努力!---跑起来。