这里简单介绍一下自己对于classmethods和staticmethods的认识,。
首先是类方法, 在Python中指的时与类相关的方法, 而不与对象相关的方法, 也就是说这个方法是绑定在类上的, 比如我们要写一个方法统计这个类被调用了多少次
class A():
a = 0
def __init__(self):
a += 1
def get_a():
return a
运行后出现错误:
原因是, 类和对象并不在同一个作用域或者说命名空间范围内, 因此在类命名空间内所定义的a=0,在类的实例中并不存在a这一变量, 因此对a+=1就会出现局部变量a并没有定义的错误
改写成以下代码:
class A():
a = 0
def __init__(self):
A.a += 1
def get_a(self):
return A.a
运行结果: