python中的@property装饰器

本文介绍Python中如何使用@property装饰器来实现类属性的读取和设置,同时保持类的封装特性。通过实例展示了如何创建getter和setter方法。

在python类中既要保护类的封装特性,又要让开发者可以使用“对象.属性”的方式操作操作类属性,除了使用 property() 函数,Python 还提供了 @property 装饰器。通过 @property 装饰器,可以直接通过方法名来访问方法,不需要在方法名后添加一对“()”小括号。


@property 的语法格式如下:

@property
def 方法名(self)
    代码块


例如,定义一个动物类,并定义用 @property 修饰的方法操作类中的__color私有属性,代码如下:

class Animal:
    def __init__(self, color):
        self.__color = color

    @property
    def color(self):
        return self.__color


animal = Animal('red')
print(animal.color)

直接通过animal.color获取属性值
运行结果为:

red


上面程序中,使用 @property 修饰了 color 方法,这样就使得该方法变成了 Animal 类的 getter 方法。需要注意的是,如果类中只包含该方法,那么 color 属性将是一个只读属性。
也就是说,在使用 Animal 类时,无法对 color 属性重新赋值.

animal.color = 'blue'
#
Traceback (most recent call last):
  File "F:\pychrom_python\python\@property装饰器.py", line 15, in <module>
    animal.color = 'blue'
AttributeError: can't set attribute


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

@被property装饰后的方法名.setter
def 方法名(self, value):
    代码块


例如,为 Animal 类中的 color 属性添加 setter 方法,代码如下:

class Animal:
    def __init__(self, color):
        self.__color = color

    @property
    def color(self):
        return self.__color

    @color.setter
    def color(self, value):
        self.__color = value


animal = Animal('red')
animal.color = 'blue'
print(animal.color)


再次运行如下代码:

animal = Animal('red')
animal.color = 'blue'
print(animal.color)


运行结果为:
修改后的颜色为: blue
这样,color属性就有了 getter setter 方法,该属性就变成了具有读写功能的属性
 


 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值