类中@property与@xxx.setter的方法介绍。

简单说,@property就是将定义的函数(方法)当作属性对象使用,不需要像调用函数那样去调用,而@xxx.setter是为@xxx的这样函数进行值的设置,

就是可以用@xxx.setter为xxx的函数进行值的更改,在@xxx.setter声明下的函数名字可以不用xxx相同的函数名。

# property装饰器
# 作用: 将一个get方法转换为对象的属性。 就是 调用方法改为调用对象
# 使用条件: 必须和属性名一样 # setter方法的装饰器:
# 作用:将一个set方法转换为对象的属性。 就是 a调用方法改为调用对象
# 使用方法:@属性名.setter class Person:
def __init__(self,name):
self._name = name
# 利用property装饰器将获取name方法转换为获取对象的属性
@property
def name(self):
return self._name # 利用property装饰器将设置name方法转换为获取对象的属性
@name.setter
def nam(self,name):
self._name = name
self.a=22
p = Person('小黑')
print(p.name) # 原获取 p.neame() , 现 p.name,已经将函数(方法变成了属性值获取)
p.nam = '小灰' # 原设置 p.name('小灰') ,现 p.name = '小灰',相当于直接用变量命名,给属性值来更改此变量
print(p.name) class Person:
def __init__(self,name):
self._name = name
@property
def name(self):
a=100
return self._name,a
@name.setter
def name(self,name): # name是一个列表,包含2个元素
self._name = name[0] # 第一个元素值赋给self._name
a=name[1] # 第二个值赋给a了,可是在执行上一个name()函数时候会有a=100,因此才不会改变变量的
p = Person('小黑')
print(p.name)
p.name = [88,99] # 因为执行了a=100,所以执行a=name[1]时,也不会改变输出值
print(p.name) class Person:
def __init__(self,name,bb):
self._name = name
self.a = bb
# 利用property装饰器将获取name方法转换为获取对象的属性
@property
def name(self): return self._name,self.a
# 利用property装饰器将设置name方法转换为获取对象的属性
@name.setter
def name(self,name):
self._name = name[0]
self.a=name[1]
p = Person('小黑',100)
print(p.name) # 原获取 p.name() , 现 p.name,已经将函数(方法变成了属性值获取)
p.name = [88,'小慧'] # 多个@property的属性输出
print(p.name)

												

最新文章

  1. [转]office 2016 4合1/3合1 专业版 增强版 精简绿色安装版
  2. jquery_DOM笔记
  3. 循序渐进Python3(十二) --0--  web之框架
  4. 忘记BIOS超级管理员密码,怎么破解?
  5. WPF自定义控件与样式(6)-ScrollViewer与ListBox自定义样式
  6. VS2010运行类向导提示“未实现该方法或操作”
  7. struts2重点——ValueStack和OGNL
  8. Frenetic Python实验(三)
  9. Linux C编程一站式学习
  10. python中文处理之encode/decode函数
  11. Windows下的Memcache安装与测试教程
  12. C 双向链表
  13. python【第五篇】常用模块学习
  14. JavaScript--声明提前
  15. PL/SQL中的变量
  16. HDU 1796 Howmany integers can you find (容斥原理)
  17. uva 10382 Watering Grass_贪心
  18. X-UA-Compatible IE 浏览器默认文档模式设置
  19. Github网站加载不完全,响应超时,如何解决
  20. webstorm快捷键收集【转发】

热门文章

  1. java笔记----cpu消耗快速定位代码
  2. canvas绘制流程图
  3. iOS中的NSOperation线程
  4. Vue实战狗尾草博客后台管理系统第七章
  5. [b0025] vmware_桥接网路设置
  6. [b0006] Spark 2.0.1 伪分布式搭建练手
  7. Linux—文件上传和下载
  8. C++学习五 const vector<int>类型的迭代器使用
  9. 201871010113-刘兴瑞《面向对象程序设计(java)》第六-七周学习总结
  10. bootstrap多级下拉菜单