标签:传递 特殊 assm icm pre 类方法 初始化 property 定义
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") #不用实例化,使用类名直接调用
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
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
标签:传递 特殊 assm icm pre 类方法 初始化 property 定义
原文地址:https://www.cnblogs.com/flags-blog/p/12238791.html