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类和@property装饰器
解决报错:在Python中使用property装饰器时,出现错误:TypeError: descriptor ‘setter‘ requires a ‘property‘ object but(代码片