美文网首页
Python实例方法、类方法、静态方法

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

作者: 霞姐时间管理 | 来源:发表于2017-10-03 06:25 被阅读36次

实例方法,类方法,静态方法都可以通过实例或者类调用,只不过实例方法通过类调用时需要传递实例的引用(python 3可以传递任意对象,其他版本会报错)

1. 实例方法针对的是实例,第一个参数是self,普通对象方法至少需要一个self参数,代表类对象实例;
2. 类方法针对的是类,@classmethod 它表示接下来的是一个类方法,类方法的第一个参数cls,它们都可以继承和重新定义;
3. 静态方法用于作为程序中的共享资源,直接通过类去调用,不用实例化对象,不需要self参数,可以认为是全局函数,@staticmethod 它表示接下来的是一个静态方法

示例:

class Test1(object):
    
#定义实例方法
    def test1(self):
        print "object"
#定义类方法
    @classmethod
    def test2(cls):
        print"class"

#定义静态方法
    @staticmethod
    def test3():
        print "static"
        
#子类覆盖父类的类方法
class Test2(Test1):
    
    @classmethod
    def test2(cls):
         print cls
         print "test2 object"
    
#实例方法调用-1
f1=Test1()#创建实例对象f1
f1.test1()#调用实例方法
#实例方法调用-2
Test1.test1(f1)#另一种调用实例的方法

print "-------------"

#类方法通过实例调用-1
f1.test2()
#类方法通过类调用-2(不需传递实例的引用)
Test1.test2()
print "-------------"

#静态方法使用实例调用-1
f1.test3()
#静态方法静态方式调用-2
Test1.test3()
print "-------------"

Test2.test2() #如果子类覆盖了父类的类方法,最终调用的是子类的类方法,并传递子类的类对象

运行结果如下:

image.png
注意:

1.Python中严格区分大小写。
2.如果子类覆盖了父类的类方法,最终调用的是子类的类方法,并传递子类的类对象。

相关文章

网友评论

      本文标题:Python实例方法、类方法、静态方法

      本文链接:https://www.haomeiwen.com/subject/lqvlsxtx.html