最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • python类属性是什么

    正文概述    2020-09-24   215

    python类属性是什么

    首先我们来看一下属性的定义

    属性的定义:python中的属性其实是普通方法的衍生。

    操作类属性有三种方法:

    1.使用@property装饰器操作类属性。

    2.使用类或实例直接操作类属性(例如:obj.name,obj.age=18,del obj.age)

    3.使用python内置函数操作属性。

    属性存在的意义:

    1、访问属性时可以制造出和访问字段完全相同的假象,属性由方法衍生而来,如果Python中没有属性,方法完全可以代替其功能。

    2、定义属性可以动态获取某个属性值,属性值由属性对应的方式实现,应用更灵活。

    3、可以制定自己的属性规则,用于防止他人随意修改属性值。

    下面详细介绍三种操作类属性的方法:

    1.使用@property装饰器操作类属性。

    定义时,在普通方法的基础上添加@property装饰器;属性仅有一个self参数,调用时无需括号;

    优点:

    1) @property装饰器可以实现其他语言所拥有的getter,setter和deleter的功能(例如实现获取,设置,删除隐藏的属性)

    2) 通过@property装饰器可以对属性的取值和赋值加以控制,提高代码的稳定性。 

    实例代码1:

    #encoding=utf-8                                                  
    class Goods():  #新式类                                    
        @property                                                      
        def price(self): #查看属性值                                           
            print ('@property ')                                         
        @price.setter    #修改、设置属性                                     
        def price(self, value):                                        
           print ('@price.setter' )                                      
        @price.deleter   #删除属性                                          
        def price(self):                                               
           print ('@price.deleter')                                      
                                                                       
    obj = Goods(50)                                                    
    obj.price         # 自动执行 @property 修饰的 price 方法,并获取方法的返回值              
    obj.price = 2000  # 自动执行 @price.setter 修饰的 price 方法,并将2000赋值给方法的参数
    del obj.price     # 自动执行 @price.deleter 修饰的 price 方法 
    结果输出:
    @property
    @price.setter
    @price.deleter

    实例代码2:通过@property装饰器对属性的取值和赋值加以控制

    class Goods(object):
        def __init__(self):
            self.value=50
        @property
        def price(self):  # 查看属性
            return self.value
    
        @price.setter  # 添加或设置属性(属性名.setter)
        def price(self, value):
            if value >=50 and value<=100:  #对属性的取值和赋值加以控制
                self.value=value
                print (self.value)
            else:
                print ("请输入一个50到100之间的数!")
    
        @price.deleter  # 删除属性(属性名.deleter) 注意:属性一旦删除,就无法设置和获取
        def price(self):
            del self.value
            print ("price is deleted!")
    
    obj = Goods()
    print (obj.price)   # 自动执行 @property 修饰的 price 方法,并获取方法的返回值
    obj.price=106     # 自动执行 @price.setter 修饰的 price 方法,并将106 赋值给方法
    del obj.price     # 自动执行 @price.deleter 修饰的 price 方法
    结果输出:
    50
    请输入一个50到100之间的数!
    price is deleted!

    起源地下载网 » python类属性是什么

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元