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