码迷,mamicode.com
首页 > 其他好文 > 详细

类的特殊方法 staticmethod classmethod property

时间:2020-01-28 21:05:21      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:传递   特殊   assm   icm   pre   类方法   初始化   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

标签:传递   特殊   assm   icm   pre   类方法   初始化   property   定义   

原文地址:https://www.cnblogs.com/flags-blog/p/12238791.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!