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();//直接静态方式调用