python @staticmethod和@classmethod的作用与区别
2020-12-13 01:39
标签:elf 的区别 python 方法 ati self value == 改变 执行结果如下: 个人理解: @staticmethod 不需要访问和类相关的属性或数据(感觉只是概念上的区别,你这样申请了用的人就知道了,如果你非要在这个方法中访问test.xxx 它就和@classmethod的作用一样了。) @classmethod 可以访问和类相关(不和实例相关)的属性,看 test.my_class_print("class print") 和 my_test.my_class_print("class print") 的结果都是class中定义的class_name 的值,非实例的值:xxx 如果你定义了一个方法它的返回值永远和类的属性及实例无关,结果永远不变,就用@staticmethod 如果你定义了一个方法它的返回值和只和类的属性有关,结果可变(比如上例,我用test.class_name="AAA"改变类的属性值,my_class_print输出的结果就改变了) .就用@classmethod python @staticmethod和@classmethod的作用与区别 标签:elf 的区别 python 方法 ati self value == 改变 原文地址:https://www.cnblogs.com/champaign/p/11004888.htmlclass test:
class_name = "test"
def __init__(self, name):
self.class_name = name
def my_print(self, value):
print(value + " " +self.class_name)
@staticmethod
def my_static_print(val):
print(val)
@classmethod
def my_class_print(cls, val):
print(val +" "+ cls.class_name)
if __name__ == "__main__":
my_test = test("xxx")
test.my_static_print("static print")
test.my_class_print("class print")
my_test.my_static_print("static print")
my_test.my_class_print("class print")
my_test.my_print("my_print")
static print
class print test
static print
class print test
my_print xxx
上一篇:js库
下一篇:jQuery异步加载数据添加事件
文章标题:python @staticmethod和@classmethod的作用与区别
文章链接:http://soscw.com/essay/23974.html