开发者笔记python中的类方法(@classmethod)和静态方法(@staticmethod)
Posted stagebo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开发者笔记python中的类方法(@classmethod)和静态方法(@staticmethod)相关的知识,希望对你有一定的参考价值。
在java、c#等高级语言中我们用static来定义静态方法和静态变量,那么在python中如何定义静态方法和静态变量呢。
python提供了@classmethod和@staticmethod来定义静态方法,刚接触的时候不太明白,Stack Overflow提供了一个比较方便理解的解释,Stack Overflow回答。
但是看完还是不太理解,于是自己写了个实例:
class stclass(): d=1 #对象方法 def imethod(self): print(self) print("instance method") #类方法 @classmethod def cmethod(cls): print(cls) print("class method") #静态方法 @staticmethod def smethod(): print("static method") sc = stclass() sc.imethod() sc.cmethod() sc.smethod()
运行结果如下:
然后就可以解释了:
1、实例方法,该实例属于对象,该方法的第一个参数是当前实例,拥有当前类以及实例的所有特性。
2、类方法,该实例属于类,该方法的第一个参数是当前类,可以对类做一些处理,如果一个静态方法和类有关但是和实例无关,那么使用该方法。
3、静态方法,该实例属于类,但该方法没有参数,也就是说该方法不能对类做处理,相当于全局方法。
以上是关于开发者笔记python中的类方法(@classmethod)和静态方法(@staticmethod)的主要内容,如果未能解决你的问题,请参考以下文章