Python 除了擁有實例方法外,還擁有靜態方法和類方法。python
- class Foo(object):
- def test(self)://定義了實例方法
- print("object")
- @classmethod
- def test2(clss)://定義了類方法
- print("class")
- @staticmethod
- def test3()://定義了靜態方法
- print("static")
- ff.test();//經過實例調用
- Foo.test(ff)//直接經過類的方式調用,可是須要本身傳遞實例引用
若是Foo有了子類而且子類覆蓋了這個類方法,最終調用會調用子類的方法並傳遞的是子類的類對象。
- class Foo2(Foo):
- @classmethod
- def test2(self):
- print(self)
- print("foo2 object")
- f2=Foo2()
- print(f2.test2())
輸出結果:
- <class '__main__.Foo2'>
- foo2 object
靜態方法就跟普通的Java靜態方式同樣
url
- ff=Foo();
- ff.test3();//使用實例調用
- Foo.test3();//直接靜態方式調用