您的位置:首页 > 编程语言 > Python开发

python实例方法、静态方法、类方法

2017-04-17 21:08 435 查看
class Foo(object):
def test(self)://定义了实例方法
print("object")
@classmethod
def test2(clss)://定义了类方法
print("class")
@staticmethod
def test3()://定义了静态方法
print("static")


1、实例方法就是类的实例能够使用的方法。实例方法的两种调用方式:

ff.test();//通过实例调用
Foo.test(ff)//直接通过类的方式调用,但是需要自己传递实例引用


2、静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作。使用装饰器@staticmethod定义静态方法。类对象和实例都可以调用静态方法,

类方法的调用方式:

Foo.test2();


如果Foo有了子类并且子类覆盖了这个类方法,最终调用会调用子类的方法并传递的是子类的类对象。

class Foo2(Foo):
@classmethod
def test2(self):
print(self)
print("foo2 object")
f2=Foo2()
print(f2.test2())


输出是:

<class '__main__.Foo2'>
foo2 object


3、类方法是将类本身作为对象进行操作的方法。类方法使用@classmethod装饰器定义,其第一个参数是类,约定写为cls。类对象和实例都可以调用类方法,

静态方法的调用方式:

ff.test3()


归纳如下:

调用方式:

三种方法都可以通过实例来调用

普通方法不能通过类名调用,但是静态方法和类方法是可以的

权限:

静态方法和类方法无法访问实例属性

类方法可以访问类属性,但是静态方法不可以访问类属性

#普通方法,可以通过self访问实例属性
def normalMethod(self,data)
#类方法,可以通过cls访问类属性
@classmethod
def classMethod(cls,data)
#静态方法,不可以访问,通过传值的方式
@staticmethod
def staticMethod(data)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python