美文网首页
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