類方法和靜態方法

2021-08-18 03:53:19 字數 2159 閱讀 5815

通過靜態方法和類方法能夠把相關的函式封裝到乙個類裡面,有效的將**組織起來, 提高**的可維護性;

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...