类方法和静态方法

一、类方法

类方法需要⽤装饰器 @classmethod 来标识。

对于类⽅法,第⼀个参数必须是类对象,⼀般以cls 作为第⼀个参数(使用其他名称也可以,不过都习惯使用cls)。

  • 由哪一个类调用的方法,方法内的cls就是哪一个类的引用
  • cls和 self类似
class Demo(object):
    __num = 10

    @classmethod
    def get_num(cls):
        return cls.__num


func = Demo()
print(func.get_num())

 

二、静态方法

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

静态方法需要⽤装饰器 @@staticmethod 来标识。

静态方法参数随意,没有“self”和“cls”参数,但是方法体中不能使用实例的任何属性和方法。

class Demo():
    __name = 'tom'

    def __init__(self, age):
        self.age = age

    @staticmethod
    def sfucn():
        print('静态方法~~~')
        print(f'静态方法-类属性:{Demo.__name}')
        # print(f'静态方法-实例属性:{self.age}')  本行代码会报错

d = Demo(18)
d.sfucn()
# 静态方法~~~
# 静态方法-类属性:tom

Demo.sfucn()
# 静态方法~~~
# 静态方法-类属性:tom

 

posted on 2023-04-07 11:51  木去  阅读(376)  评论(0)    收藏  举报