property() 函数作用于新式类,返回属性值。

class C(object):
def __init__(self):
self._x = None def getx(self):
print('get')
return self._x def setx(self, value):
print('set')
self._x = value def delx(self):
print('del')
del self._x x = property(getx, setx, delx, "I'm the 'x' property.") # c = C()
# c.x = 12
# print(c.x)
# del c.x

@property 装饰器用的最多。把一个方法变成属性调用,那么我们在对实例属性操作的时候,就知道该属性很可能不是直接暴露的,而是通过getter和setter方法来实现的。

# @property 装饰器负责把一个方法变成属性调用

class Student(object):
# 把一个getter方法变成属性,只需加上 @property
@property
def score(self):
return self._score # 把一个setter方法变成属性,@fun.setter
@score.setter
def score(self, value):
if not isinstance(value, int):
raise ValueError('score must be an interger!')
if value < 0 or value > 100:
raise ValueError('score must between 0~100')
self._score = value s = Student()
s.score = 60
print(s.score)
class Parrot(object):
def __init__(self):
self._voltage = 100000 @property
def voltage(self):
"""Get the current voltage."""
return self._voltage # setter,deleter,这些额外函数名和property相同
@voltage.setter
def voltage(self, value):
self._voltage = value @voltage.deleter
def voltage(self):
del self._voltage

参考:
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143186781871161bc8d6497004764b398401a401d4cce000
http://www.runoob.com/python/python-func-property.html

最新文章

  1. Block Markov Coding &amp; Decoding
  2. linux GO语言配置安装
  3. volatile之一--volatile不能保证原子性
  4. C++例题1:输出可打印字符
  5. Python函数小结(1)--参数类型(*, ** 的区别), 闭包
  6. bzoj1671 [Usaco2005 Dec]Knights of Ni 骑士
  7. (转) 学习C++ -&gt; 类(Classes)的定义与实现
  8. js智能提示代码
  9. iOS之极光推送
  10. Nginx 负载均衡配置和策略
  11. java与JSTL库
  12. CSS 圣杯布局 / 双飞翼布局的实现
  13. The listener supports no services
  14. Synchronized和Lock的区别
  15. linu输出重定向
  16. eclipse4.2版本下面安装ADT,安装已经完成了,但没有ADT的那个图标显示
  17. 标准库 svc—程序及服务控制
  18. Lua面向对象 --- 继承
  19. class和object_getClass方法区别
  20. 【BZOJ 2986】 莫比乌斯函数+容斥原理

热门文章

  1. RabbitMQ---5、qos内存溢出+prefetch消息堵塞问题
  2. 使用auth_request模块实现nginx端鉴权控制
  3. IDEA 2017.2.2 环境下使用JUnit
  4. php格式化保留2位小数
  5. web第一章(html)
  6. 在Ubuntu 14.04.1 LTS 上安装gettext失败
  7. Ajax实现表格实时编辑
  8. SVN - Checksum mismatch while updating
  9. C#多线程顺序依赖执行控制
  10. Linux下部署配置Nginx