类方法@classmethod,静态方法@staticmethod

类方法

普通的方法

class A:
    def func(self):
        print(self)


a1 = A()
a1.func()
# 结果:a1的内存地址
# <__main__.A object at 0x00FACEB0>

调用普通方法必须要传一个参数

class A:
    def func(self):  # 类里面的普通方法
        print(self)

    @classmethod  # 类方法的装饰器
    def fun1(cls):
        print(cls)


a1 = A()
a1.func()  # 对象调用self,将对象本身传给self
A.func(a1)  # 类名点方法,主动传的对象

#结果
# <__main__.A object at 0x030E6450>
# <__main__.A object at 0x030E6450>

类方法:通过类名调用的方法,类方法中第一个参数约定俗成是cls,python自动将类名(类空间)传给cls

class A:
    def func(self):  # 类里面的普通方法
        print(self)

    @classmethod  # 类方法的装饰器
    def func1(cls):
        print(cls)


A.func1()  # 类名点方法,主动传的对象

# 结果
# <class '__main__.A'>

对象可以调用类方法,传给cls的是类本身。(对象调用普通方法,传

上一篇:python @staticmethod


下一篇:2021-04-07