@property 用法实例

Python @property 用法

已经在Animal类中定义2个属性name和_speed:

class Animal():
   cprop = "我是类上的属性cprop"
   
   def __init__(self,name,speed):
       self.name = name # 动物名字
       self._speed = speed # 动物行走或飞行速度

像这种方法定义的属性,外界可以对属性赋任意值,这不是合理的。如下speed参数被赋值为负值,这肯定不合理:

jiafeimao = Cat('jiafeimao',-2,'gray','CatGenre')

所以一种解决方法便是使用@property,写法也很简洁:

   # 读
   @property 
   def _speed(self):
       return self.__speed
  # 写
   @_speed.setter
   def _speed(self,val):
       if val < 0:
           raise ValueError('speed value is negative')
       self.__speed = val 

Cat('jiafeimao',-2,'gray','CatGenre')执行时,会进入到@_speed.setter,检查不满足,抛出取值异常。

@property 就是给 _speed 函数增加功能后返回一个更强大的函数

@属性.setter 也是一个函数,装饰后控制着属性的写入操作。


原文地址:https://www.cnblogs.com/kai-/p/13418867.html