【Python(15)内置装饰器 @property】

property 1

n.→ 属性
所有物,财产;地产,房地产;房地产股票(或投资)(properties);<法律> 所有权,处置权;特性,性质

property函数字如其名,其在装饰器的主要应用在于,我们要实现

  1. 保护类的封装特性

  2. 让开发者可以使用“对象.属性”的方式操作操作类属性的功能

除了使用 property() 函数,还可以使用 @property 装饰器。通过 @property 装饰器,可以直接通过方法名来访问方法,不需要在方法名后添加一对“()”小括号。

简洁的说明@property

语法
@property
def func(self):
    "do something better"
    

示例1:

class Rect:
    def __init__(self,area):
        self._area = area
        
    @property
    def area(self):
        return self._area

rect = Rect(30) #直接通过方法名来访问 area 方法
print("矩形的面积是:",rect.area)

>>> 矩形的面积为:30

在示例1中如果类中只包含该方法,无法对 area 属性重新赋值,

而要想实现修改 area 属性的值,还需要为 area 属性添加 setter 方法,就需要用到 setter 装饰器,它的语法格式如下:


@func.setter
def func(self, value):
    "do something better"

示例2:

class Rect:
    def __init__(self,area):
        self._area = area
        
    @property
    def area(self):
        return self._area
        
    @area.setter
    def area(self, value):
        self._area = value
    



rect = Rect(30) #直接通过方法名来访问 area 方法
print("矩形的面积是:",rect.area)

>>> 矩形的面积为:30

rect.area = 90 # 重新赋值
print("矩形的面积是:",rect.area)

>>> 矩形的面积为:90

除此以外,还可以使用deleter装饰器来删除指定属性:

示例3:

class Rect:
    def __init__(self,area):
        self._area = area
        
    @property
    def area(self):
        return self._area
        
    @area.setter
    def area(self, value):
        self._area = value
        
    @area.deleter
    def area(self):
        self._area = 0

rect = Rect(30) #直接通过方法名来访问 area 方法
print("矩形的面积是:",rect.area)

>>> 矩形的面积为:30

rect.area = 90 # 重新赋值
print("矩形的面积是:",rect.area)

>>> 矩形的面积为:90

del rect.area # 删除属性
print("矩形的面积是:",rect.area)

>>> 矩形的面积为:0

  1. /ˈprɑːpərti ↩︎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Eason DayDayUp

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

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

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

打赏作者

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

抵扣说明:

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

余额充值