类的特殊方法 staticmethod classmethod property
Posted flags-blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类的特殊方法 staticmethod classmethod property相关的知识,希望对你有一定的参考价值。
staticmethod方法
1 #staticmethod 被装饰的方法与类本身没有任何关系,不能使用类的任何属性,不用实例化直接通过类名进行调用,默认不会将实例self作为实参传递 2 class Foo7(object): 3 def __init__(self, name): 4 self.name = name 5 @staticmethod 6 def get_staticmethod(name): 7 print("my staticmethod name is %s"%name) 8 Foo7.get_staticmethod("staticmethod_usage") #不用实例化,使用类名直接调用
classmethod方法
1 #classmethod 只能使用类的公有属性,公有属性在类定义时已经初始化,所有可以使用类直接访问不必进行实例化,当然也可以在对象内对其进行调用 2 #通过类对其修改后使用类、对象对公有属性进行查询结果一致,对其修改的影响与类的公有属性章节一致 3 class Foo8(object): 4 classmethod_var = "classmethod_var" 5 def __init__(self, name): 6 self.name = name 7 @classmethod 8 def get_classmethod(self): 9 print("my classmethod value is %s"%self.classmethod_var) 10 @classmethod 11 def set_classmethod(self, new_var): 12 self.classmethod_var = new_var 13 Foo8.get_classmethod()#my classmethod value is classmethod_var 14 obj8 = Foo8("Foo8") 15 obj8.get_classmethod() #my classmethod value is classmethod_var 16 Foo8.set_classmethod("classmethod_new_var") 17 Foo8.get_classmethod() #my classmethod value is classmethod_new_var 18 obj8.get_classmethod() #my classmethod value is classmethod_new_var
property方法
1 #property 将类方法变为属性,调用时不用加();但是默认也不能对其传递参数进行赋值; 2 class Foo9(object): 3 def __init__(self, name): 4 self.name = name 5 @property 6 def get_property_name(self): 7 print("my property name is %s"%self.name) 8 @get_property_name.setter 9 def get_property_name(self, name1): 10 self.name = name1 11 12 13 obj9 = Foo9("property_name") 14 obj9.get_property_name #my property name is property_name 类似调用属性直接调用类方法,不用加()也不能传递参数 15 obj9.get_property_name = "property_new_name" #此时会调用被get_property_name.setter装饰的get_property_name方法,将赋值变量作为name1的实参进行传递 16 obj9.get_property_name #my property name is property_new_name 此时调用被property装饰的get_property_name方法,上一行语句将其已经修改,此时输出新值
以上是关于类的特殊方法 staticmethod classmethod property的主要内容,如果未能解决你的问题,请参考以下文章