python 靜態方法

2021-09-10 05:06:51 字數 1036 閱讀 8265

靜態方法(@staticmethod)、類方法(@classmethod),可被類或類的例項物件呼叫。

class 中的方法

例項方法,第乙個引數必須要預設傳例項物件,一般習慣用self。

靜態方法,引數沒有要求。

類方法,第乙個引數必須要預設傳類,一般習慣用cls。

感覺唯一區別就是類方法第乙個引數預設是類本身,當有子類繼承時,傳入的是子類物件

靜態方法節約記憶體,可讀性相對好一點

如果不需要獲取訪問類資訊和屬性用靜態方法

import time

class date:

def __init__(self, year, month, day):

self.year = year

self.month = month

self.day = day

@staticmethod # 靜態方法

def static_now():

t = time.localtime()

return date(t.tm_year, t.tm_mon, t.tm_mday)

@classmethod # 類方法

def class_now(cls):

t = time.localtime()

return cls(t.tm_year, t.tm_mon, t.tm_mday)

class eurodate(date):

def __str__(self):

return 'year:%s month:%s day:%s' % (self.year, self.month, self.day)

if __name__ == '__main__':

e = eurodate.static_now()

print(e)

e = eurodate.class_now()

print(e)

輸出結果:

year:2019 month:1 day:25

Python 類方法 靜態方法

1 我們已經討論了類 物件可以擁有像函式一樣的方法,這些物件方法與函式的區別只是乙個額外的self變數 coding utf 8 usr bin python filename method.py class person grade 1 def init self,name self.name n...

Python 靜態方法 類方法

一 靜態方法 乙個不能訪問例項變數和類變數的方法,它與類唯一的關聯就是需要通過類名來呼叫這個方法。class person object def init self,name self.name name def eat self print s is eating self.name static...

python靜態方法 類方法

常規 1 class dog object 2def init self,name 3 self.name name45 defeat self 6print s is eating self.name 78 d1 dog lele 9 d1.eat 1.靜態方法 名義上由類管理,而實際在呼叫時,需...