什麼是python
中的classmethod
,它的用途是什麼?python
classmethod
裝飾器對應的函數不須要實例化,不須要 self 參數,但第一個參數須要是表示自身類的 cls 參數,能夠來調用類的屬性,類的方法,實例化對象等。函數
class Demo: @classmethod def klassmeth(*args): return args """ Usage:: >>>Demo.klassmeth() >>> (<class '__main__.Demo'>, 'span') """
klasssmeth 返回所有位置參數
Demo.klassmenth
,它的第一個參數始終是Demo
類.什麼是python
中的staticmethod
,它的用途是什麼?spa
staticmethod
是一個將類中的方法靜態化,無需實例即可調用.code
#!/usr/bin/python # -*- coding: UTF-8 -*- class C(object): @staticmethod def f(): print('runoob'); C.f(); # 靜態方法無需實例化 cobj = C() cobj.f() # 也能夠實例化後調用
__slots__
用於什麼地方?對象
Python
在各個實例中名爲__dict__
的字典裏存儲的實力屬性,爲了是底層的散列表提高訪問速度,字典會消耗大量內存.__slots__
類屬性,能節省大量內存.方法事讓解釋器在元組中存儲屬性,而不是字典.__slots__
屬性沒有效果,Python
只會使用各個類中定義的__slots__
屬性.__slots__
屬性以後,實例不能再有__slots__
中所列名稱以外的其餘屬性.__dict__
這個名稱添加到__slots__
中,是一個糟糕的選擇.__weakref__
加入__slots__
,實例就不能做爲弱引用的目標.