开发者

python类方法和静态方法详解

目录
  • 类方法
  • 静态方法
    • 1特点
    • 2使用场景
  • 总结

    类方法

    需要用装饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为参数

    使用场景

    1当方法中需要使用类对象(如访问私有类属性)时,定义类方法

    2类方法一般和类属性配合使用

    # 需要用装饰器@classmethod来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以cls作为参数
    # 使用场景
    # 1当方法中需要使用类对象(如访问私有类属性)时,定义类方法
    # 2类方法一般和类属性配合使用
    class Dog(object):
        __tooth = 10
        t=10
    #修改私有属性
        @classmethod
        def getooth(cls, c):
            cls.__tooth = c
            return cls.__tooth
    #得到私有属性
        def get(self):
            return self.__tooth
    
    ww = Dog()
    cc=Dog()
    result1=wwILONUMOB.get()            #10
    result2 = ww.getooth(100)   #100
    result3=ww.get()            #100
    result4=cc.get()            #100成功修改私有属http://www.cppcns.com性
    print(result1, result2,result3,result4 )
    

    如果去掉@classmethodhttp://www.cppcns.com后,就无法修改私有类属性,result4 变成了10

    self,和cla只是名词,可以更换其它名字,@不可去掉

    静态方法

    1特点

    需要通过修饰器@staticmethod来修饰,静态方法既不需要传递实例对象,也不需要传递类对象(形参没有sslf/cls)

    静态方法也可以通过类对象和实例对象去访问

    2使用场景

    当方法中既不需要使用实例对象(如实例属性,实例方法),也不需要使用类对象(如类属性、类方法、创建实例等时,定义静态方法

    取消不需要的参数传递,有利于减少不必要的内存占用和性能消耗

    #1特点
    #需要通过修饰器@staticmethod来修饰,静态方法既不需要传递实例对象,也不需要传递类对象(形参没有sslf/cls)
    #静态方法也可以通过类对象和实例对象去访问
    #2使用场景
    #当方法中既不需要使用实例对象(如实例属性,实例方法),也不需要使用类对象(如类属性、类方法、创建实例等时,定义静态方法www.cppcns.com
    #取消不需要的参数传递,有利于减少不必要的内存占用和性能消耗
    class Dog(object):
       编程客栈 @staticmethod
        def static():
            print("这是一个静态方法")
    dog=Dog()
    dog.static() #这是一个静态方法
    Dog.static() #这是一个静态方法
    

    总结

    本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜