python类方法@classmethod与@staticmethod
目录
python类方法@classmethod与@staticmethod
一、@classmethod
介绍
与普通的类方法有所不同的是,用@classmethod修饰的类方法不传入self实例本身,而是传入cls,代表这个类自身,可以来调用类的属性,类的方法,实例化对象等。
语法
使用的语法也非常简单,直接在类方法上加上装饰器@classmethod即可,另外传入cls参数作为方法的第一个参数。
class A(object): @classmethod def func(cls): pass
举例
class A(object): num = 1 def func1(self): print('func1') @classmethod def func2(cls): print('func2') print(cls.num) cls().func1() if __name__ == '__main__': A.func2() ------------------------------ >>> func2 >>> 1 >>> func1
二、@staticmethod
介绍
使用@staticmethod修饰的类方法也被称为静态方法,此方法不传入代表实例对象的self参数,并且不强制要求传递任何参数,可以被类直接调用,当然实例化的对象也可以调用。
语法
使用时直接在类方法上加上装饰器@staticmethod,参数不需要self,其他参数也是可选。
class B(object): @staticmethod def func() pass
举例
class B(object): @staticmethod def func1(): print('func1') @staticmethod def func2(a, b): print('func2') print('a=', a) print('b=', b) if __name__ == '__main__': B.func1() b = B() b.func1() B.func2(1, 2) ------------------------------ >>> func1 >>> func1 >>> func2 >>> a= 1 >>> b= 2
相关推荐
zhuquan0 2020-05-25
class Singleton: def __new__: # 关键在于这,每一次实例化的时候,我们都只会返回这同一个instance对象 if not hasattr: cls.instance =
lhxxhl 2020-05-16
PHP学习笔记 2020-05-07
DCXabc 2020-05-01
bcbeer 2020-05-02
fly00love 2020-03-08
liusarazhang 2020-03-06
zhuxianfeng 2020-03-03
Kwong 2020-03-01
ladysosoli 2020-03-01
liugan 2020-02-25
Dimples 2020-02-14
wangqing 2020-02-13
fanhuasijin 2020-02-03