zoukankan      html  css  js  c++  java
  • @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 也是一个函数,装饰后控制着属性的写入操作。


  • 相关阅读:
    第十三周总结
    第一阶段意见评论
    第十二周总结
    关于transform的3D变形函数
    12.9学习内容
    12.8学习的内容
    这是自己的第一篇博客
    食物链
    poj1988Cute Stacking
    银河英雄传说
  • 原文地址:https://www.cnblogs.com/kai-/p/13418867.html
Copyright © 2011-2022 走看看