【开发者笔记】python中的类方法(@classmethod)和静态方法(@staticmethod)

2018-02-11 14:19:37来源:oschina作者:stagebo人点击

分享

在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、静态方法,该实例属于类,但该方法没有参数,也就是说该方法不能对类做处理,相当于全局方法。


微信扫一扫

第七城市微信公众平台