创新路
我们一直在努力

python类(1

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

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

   优点:

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

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

    实例代码1:

                                             

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

未经允许不得转载:天府数据港官方信息博客 » python类(1

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机