Python:使用property装饰器将方法转为属性

       最近看了一下python,学习了点基础。本文就是在学习python过程中的产物之一。一来作为笔记方便日后参阅,二来写出来分享给python初学者。由于笔者的工作语言是java,因此可能回经常将python于java比较。

一、property用途

有时候在写程序中某些变量是由特殊的范围值的,就好像people中的age属性:年龄一样,总不可能是负数的吧。那么就要对该变量进行检查。一般的做法就是在使用该变量之前检查一下是否在合理范围内,如果不在合理的范围内,就给出相应的提示,或抛出相关的错误。而另一种是在给该变量赋值之前进行相关检查,如果在合理范围内就对该变量赋值。
以上是两种常见的检查,今天要说的不是以上两种检查之一,而是赋值的时候检查。这样的写法很简单,无非是使用该变量的setter对变量赋值,相关的检查逻辑在settter。这样的做法不错,但是赋值过于麻烦,总要以这样的方式进行赋值:
people.setAge(60)
远没有以下这种赋值方法来得方便:
people.age=60

这种赋值不但方便而且简单明了。
但是说好的赋值的时候检查就做不到了,有没有一种方法可以既检查,赋值的时候又简单呢?
在python中有一种装饰器可以做到这种效果,该装饰器就是: property

二、用法

property的用法很简单,也是基于getter和setter。
property可以将getter和setter转化成属性。



class People(object):
    @property
    def getAge(self):
        return self.age
    @age.setter
    def setAge(self, age):
        if age<0:
            raise ValueError('age error!')
        else:
        self.age = age

在getter上加上property装饰器之后就可以直接以这种方式people.age获取age的值,settler的做法差不多只是装饰器的写法不一致而已将【变量名】.setter写在setter上面即可完成,从此设置age不用使用setter那么麻烦了,可以直接使用people.age=60这样的写法啦


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值