python的@classmethod和@staticmethod的区别和使用
Posted 背了个影子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的@classmethod和@staticmethod的区别和使用相关的知识,希望对你有一定的参考价值。
@classmethod
classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。
class A(object): bar = 1 def func1(self): print(‘foo‘) @classmethod def func2(cls): print(‘func2‘) print(cls.bar) cls().func1() # 调用 foo 方法 A.func2() # 不需要实例化
输出结果如下
func2 1 foo
@staticmethod
python staticmethod 返回函数的静态方法。
class C(object): @staticmethod def f(): print(‘runoob‘); C.f(); # 静态方法无需实例化 cobj = C() cobj.f() # 也可以实例化后调用
输出结果如下
runoob
runoob
以上是关于python的@classmethod和@staticmethod的区别和使用的主要内容,如果未能解决你的问题,请参考以下文章
Python中@staticmethod 和@classmethod 的区别
当我需要在 python 编程中使用@staticmethod 和@classmethod 时? [复制]
python python @classmethod @staticmethod和实例方法