python类方法和静态方法

2022-05-05 16:00:52 浏览数 (1)

类方法和静态方法

类方法

使用装饰器@classmethod来定义类方法。原理上来说,类方法是将类本身作为对象进行操作的方法。类方法内部可以直接访问类属性、类方法、实例方法,但是无法访问实例属性。例如:

代码语言:javascript复制
class person:
    flag = "类属性"

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

    @classmethod
    def class_m(cls):
        print(cls.flag)     # 访问类属性
        cls.self_m(cls)     # 调用实例方法
        cls.class_m2()      # 访问类方法
        # self.name           # 错误,无法访问实例属性

    def self_m(self):
        print("实例方法")

    @classmethod
    def class_m2(cls):
        print("第二个类方法")

p = person("赵四")
p.class_m()

静态方法

静态方式使用@staticmethod来定义。静态方法不能访问实例属性、类属性、实例方法、类方法。可以理解为,静态方法是个独立的、单纯的函数,它仅仅只是被托管在某个类的名称空间中,便于使用和维护而已。例如:

代码语言:javascript复制
class Person():
    name = "Nicholas ZhaoSi"

    @staticmethod
    def static(x):
        print(x)
        # print(name) # 错误,静态方法不能访问类属性,类方法,实例属性,实例方法

Person().static(123)

0 人点赞