靜態方法(@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.靜態方法 名義上由類管理,而實際在呼叫時,需...