Python 實例方法、@staticmethod和@classmethod

Python 除了擁有實例方法外,還擁有靜態方法和類方法。python

[python]  view plain  copy
  1. class Foo(object):  
  2.     def test(self)://定義了實例方法  
  3.         print("object")  
  4.     @classmethod  
  5.     def test2(clss)://定義了類方法  
  6.         print("class")  
  7.     @staticmethod  
  8.     def test3()://定義了靜態方法  
  9.         print("static")  

  • 實例方法訪問方式:

[python]  view plain  copy
  1. ff.test();//經過實例調用  
  2. Foo.test(ff)//直接經過類的方式調用,可是須要本身傳遞實例引用  

  • 類方法訪問方式:

[python]  view plain  copy
  1. Foo.test2();  
若是Foo有了子類而且子類覆蓋了這個類方法,最終調用會調用子類的方法並傳遞的是子類的類對象。

[python]  view plain  copy
  1. class Foo2(Foo):  
  2.     @classmethod  
  3.     def test2(self):  
  4.         print(self)  
  5.         print("foo2 object")  
  6. f2=Foo2()  
  7. print(f2.test2())  

輸出結果:

[python]  view plain  copy
  1. <class '__main__.Foo2'>  
  2. foo2 object  

  • 靜態方法調用方式:

 靜態方法就跟普通的Java靜態方式同樣
url

[python]  view plain  copy
  1. ff=Foo();
  2. ff.test3();//使用實例調用
  3. Foo.test3();//直接靜態方式調用
相關文章
相關標籤/搜索