通過靜態方法和類方法能夠把相關的函式封裝到乙個類裡面,有效的將**組織起來, 提高**的可維護性;
class
date
(object):
def__init__
(self,year,month,day):
self.year=year
self.month=month
self.day=day
##普通方法
def__echo__
(self):
print
""" day:%.2d
month:%.2d
year:%.4d
"""%(self.day,self.month,self.year)
d=date(2018,4,3)
d.__echo__()
def __init__(self,year,month,day):
self.year=year
self.month=month
self.day=day
##普通方法
def __echo__(self):
print ""
" day:%.2d
month:%.2d
year:%.4d
"""%(self.day,self.month,self.year)
@classmethod
def str_date(cls,s):
year,month,day=map(int,s.split("-"))
d=cls(year,month,day)
return d
# d=date(2018,4,3)
# d.__echo__()
d=date.str_date("2018-4-3") ###類呼叫str_date方法
print '%s不合法' % s
else:
print '%s合法' % s
d=date.is_legal("2018-1-3")
---->>>
2018-1-3合法
普通方法: 沒有@classmethod裝飾器; 預設第乙個引數是self(<__main__.date object>); 呼叫時, 物件呼叫普通方法;
類方法: 有@classmethod裝飾器; 預設第乙個引數是cls(\<__main__.date>); 呼叫時, 類呼叫類方法;
靜態方法:有@staticmethod裝飾器,預設引數為可變引數,呼叫時,類呼叫靜態方法
裝飾類方法和靜態方法
裝飾類方法或靜態方法是很簡單的,不過要確保裝飾器在 classmethod 或 staticmethod 之前。import time from functools import wraps def timethis func wraps func start time.time r func ar...
例項方法 類方法和靜態方法
1 例項方法,即需要通過建立例項 物件 進行呼叫的方法。下方即為例項方法的例子 class person object def init self self.name zs self.age 10 p person print p.name,p.age 2 類方法,即在定義方法時使用 classme...
類方法 例項方法和靜態方法
例項方法 類方法 靜態方法三種方法在記憶體中都屬於類,區別在於呼叫方式不同 例項方法 定義 第乙個引數必須是例項物件,該引數名一般約定為 self 通過它來傳遞例項的屬性和方法 也可以傳類的屬性和方法 呼叫 只能由例項物件呼叫。例項物件可以呼叫例項方法 類方法和靜態方法類方法 定義 使用裝飾器 cl...