python3 property属性的应用

来源:互联网 发布:oa协同软件 编辑:程序博客网 时间:2024/06/05 14:18
# 1. 私有属性添加getter和setter方法class Money(object):    def __init__(self):        self.__money = 0    def getMoney(self):        return self.__money    def setMoney(self, value):        if isinstance(value, int):            self.__money = value        else:            print("error:不是整型数字")money =Money()money.setMoney(10)print(money.getMoney())# ------------------------------------------------------------# 2、升级版class Money(object):    def __init__(self):        self.__money = 0    def getMoney(self):        return self.__money    def setMoney(self, value):        if isinstance(value, int):            self.__money = value        else:            print("error:不是整型数字")    money = property(getMoney,setMoney)abc =Money()abc.money =100 # 设置setMoneyprint(abc.money) # 获取getMoney# -----------------------------------------------------class Money(object):    def __init__(self):        self.__money = 0    # 使用装饰器对money进行装饰,那么会自动添加一个叫money的属性,当调用获取money的值时,调用装饰的方法    @property    def money(self):        return self.__money    # 使用装饰器对money进行装饰,当对money设置值时,调用装饰的方法    @money.setter    def money(self, value):        if isinstance(value, int):            self.__money = value        else:            print("error:不是整型数字")a = Money()a.money = 200print(a.money)property属性有两种方式,一个是装饰器@,在方法上面使用@property另一个是类属性, 在类中定义值为property对象的类属性经典类:中的属性只有一种访问方式,其对应被 @property 修饰的方法新式类:中的属性有三种访问方式,并分别对应了三个被@property、@方法名.setter、@方法名.deleter修饰的方法由于新式类中具有三种访问方式,我们可以根据它们几个属性的访问特点,分别将三个方法定义为对同一个属性:获取、修改、删除在使用类属性时,经典类和新式类无差别。定义property属性共有两种方式,分别是【装饰器】和【类属性】,而【装饰器】方式针对经典类和新式类又有所不同。通过使用property属性,能够简化调用者在获取数据的流程

原创粉丝点击