Python的3個方法:靜態方法(staticmethod),類方法(classmethod)和實例方法


Python的方法主要有3個,即靜態方法(staticmethod),類方法(classmethod)和實例方法,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def  foo(x):
     print  "executing foo(%s)" % (x)
  
class  A( object ):
     def  foo( self ,x):
         print  "executing foo(%s,%s)" % ( self ,x)
  
     @classmethod
     def  class_foo( cls ,x):
         print  "executing class_foo(%s,%s)" % ( cls ,x)
  
     @staticmethod
     def  static_foo(x):
         print  "executing static_foo(%s)" % x
  
a = A()

這個self和cls是對類或者實例的綁定,對於一般的函數來說我們可以這么調用foo(x),這個函數就是最常用的,它的工作跟任何東西(類,實例)無關.對於實例方法,我們知道在類里每次定義方法的時候都需要綁定這個實例,就是foo(self, x),為什么要這么做呢?因為實例方法的調用離不開實例,我們需要把實例自己傳給函數,調用的時候是這樣的a.foo(x)(其實是foo(a, x)).類方法一樣,只不過它傳遞的是類而不是實例,A.class_foo(x).注意這里的self和cls可以替換別的參數,但是python的約定是這倆,還是不要改的好.

對於靜態方法其實和普通的方法一樣,不需要對誰進行綁定,唯一的區別是調用的時候需要使用a.static_foo(x)或者A.static_foo(x)來調用.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM