Python @property装饰器

Posted 漆天初晓

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python @property装饰器相关的知识,希望对你有一定的参考价值。

对于私有属性常常会添加set以及get方法,此时可以使用Python内置的@property装饰器,将set以及get方法简化为如同属性一样调用

示例:

普通情况:

class book:
    _score = 0

    def __init__(self):
        self._score = 100

    def get_price(self):
        return self._score

    def set_price(self,price):
        if not isinstance(price, int):
            raise ValueError(price must be an integer!)
        if price < 0 :
            raise ValueError(price must > 0 !)
        self._score = price

b = book()
b.set_price(100)
print("book`s price is :",b.get_price())

执行输出;

book`s price is : 100

使用了@property装饰器之后

class book:
    _score = 0

    def __init__(self):
        self._score = 100

    @property
    def price(self):
        return self._score

    @price.setter
    def price(self,price):
        if not isinstance(price, int):
            raise ValueError(price must be an integer!)
        if price < 0 :
            raise ValueError(price must > 0 !)
        self._score = price

b = book()
b.price = 100
print("book`s price is :",b.price)

执行输出:

book`s price is : 100

以上是关于Python @property装饰器的主要内容,如果未能解决你的问题,请参考以下文章

Python装饰器之 property()

python 装饰器和property

python属性装饰器[重复]

Python中的property类和@property装饰器

解决报错:在Python中使用property装饰器时,出现错误:TypeError: descriptor ‘setter‘ requires a ‘property‘ object but(代码片

python面向对象:组合封装property装饰器多态