属性property

1 私有属性添加getter和setter方法


class Test():
   def __init__(self):
       self.__num = 10 #私有属性
   def setter(self,num):
       self.__num = num
   def getter(self):
       return self.__num

2 使用property升级getter和setter方法

使用property的好处是等到我们以后想调用属性的setter和getter的方法时可以直接通过
    实例名.属性   来代替实例名.setter和getter方法
class Test():
   def __init__(self):
       self.__num = 10 #私有属性
   def setter(self,num):
       self.__num = num
   def getter(self):
       return self.__num
   num = property(getter,setter)

总结

    这样做的好处不仅写的简单而且可以将私有的变成类似共有的,相当于把方法进行了封装。开发者在对属性设置数据的时候更加方便,目的在于外部访问私有属性的时候比较的费劲(setter和getter),此时通过property创建了一个变量,它把setter和getter进行了封装

 

3. 使用property取代getter和setter方法

@property成为属性函数,可以对属性赋值时做必要的检查,并保证代码的清晰短小,主要有2个作用

  • 将方法转换为只读
  • 重新实现一个属性的设置和读取方法,可做边界判定
class Money(object):
    def __init__(self):
        self.__num = 0

    @property
    def num(self):
        return self.__num

    @num.setter
    def num(self, value):
            self.__num = value

@property是装饰器,相当于穿了一件衣服

 

posted @ 2018-05-26 21:31  少年努力吧  阅读(85)  评论(0编辑  收藏  举报