内容参考于python @classmethod 的使用场合_dyh4201的博客-CSDN博客
最近在研究部分python模块的源码, 在研究的过程中, 观察到类里面有多个地方存在 @classmethod字段, 这让本来就生涩难懂的源码更加难以理解.
没办法, 只能上网查资料.
从搜索到的结果来看, @classmethod 实际上是将参数转变为一个通用的格式.
class Projectclass(object):
def __init__(self, value):
self.value = value@classmethod
def a(self, value):
values = self(value+1)
return valuesdef show_value(self):
print(self.value)
if __name__ == "__main__":
y = Projectclass(2)
y.show_value()
t = Projectclass.a(2)
t.show_value()
结果为:
[root@localhost practice]# python3 1.py
2
3
显然, 通过classmethod的方法, 类没有直接调用__init__函数, 而是通过a(self, value)函数将2 进行加1, 然后才将结果返回给__init__函数进行初始化.
总结: 通过这种方法,能够避免在以后修改类的构造函数, 可以直接在类内添加一个classmethod将参数进行转换成类内需要的格式.
现在能力还不够强, 暂时只能看出classmethod 这个作用. 暂时记下, 以便以后需要.