靜態方法:指的是類中無需例項引數化即可呼叫的方法(不需要self引數),在呼叫過程中,無需將類例項化,直接在類之後使用.號運算子呼叫方法。
通常情況下,靜態方法使用@staticmethod裝飾器來宣告。
class classa(object):
@staticmethod
def func_a():
print("hello world")
#也可以使用例項呼叫,但是不會將例項作為引數傳入靜態方法
ca = classa()
ca.func_a()
#也可以只通過類去呼叫這個方法
#無@staticmethod
通過上面的例子,可以看出:因為func_a沒有宣告為靜態方法,類例項在呼叫func_a時,會隱式地將self引數傳入func_a,而func_a本身不接受任何引數,從而引發異常。
在python中使用的比較少,類方法傳入的第乙個引數為cls,是類本身,並且類方法可以通過類直接呼叫,或者通過例項直接呼叫。不管是用哪種方法,最左側傳入的引數一定是類本身。
通常情況下,類方法使用@classmethod裝飾器來宣告
通過上述例子可以看出,無論使用的是例項呼叫還是類方法都可以正常工作。列印的cls,看出cls傳入的是例項本身。
例項方法:除靜態方法與類方法以外,類的其他方法都屬於例項方法。
例項方法需要將例項化後呼叫,如果使用類直接呼叫例項方法,需要顯式的將例項作為引數傳入。
最左側傳入的引數是self,是例項本身。
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.靜態方法 名義上由類管理,而實際在呼叫時,需...