Python3之装饰器---特殊属性@property

特殊属性 @property

主要是实现其他语言所拥有的getter和setter功能

作用:
用来模拟一个属性
通过@property装饰器,可以对模拟属性的赋值和取值加以控制

举个简单的栗子:

class Student:
    def __init__(self, s):
        self.__score = s

    # 设置__score的值
    def setScore(self, s):
        if 0 <= s <= 100:
            self.__score = s

    # 得到__score的值
    def getScore(self):
        return self.__score

s = Student(50)  # 创建一个实例对象
s.setScore(100)  # 修改成绩
print(s.getScore())  # 得到成绩  100

以上是一个正常的写法,经过加工后:

class Student:
    def __init__(self, s):
        self.__score = s

    @property
    def score(self):
        print('getter被调用')
        return self.__score

    @score.setter
    def score(self, s):
        print('setter被调用')
        if 0 <= s <= 100:
            self.__score = s

s = Student(50)
# s.setScore(100)
s.score = 100
score = s.score
print('成绩是{}'.format(score))
  • 这两个函数必须要同名
    执行过程:
    这里写图片描述

s.score = 100是设置,会调用@score.setter装饰器的score函数
此时打印:setter被调用
score = s.score其中的s.score是调用,会调用@property装饰的score函数,
打印:getter被调用,并将__score值返回,用score绑定
print(‘成绩是{}’.format(score)) 打印的就是返回的score的值 100

本节完

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秒不可闫M先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值