@property与@xxx.setter的用法
类中@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)
@property与@xxx.setter的用法的更多相关文章
- @property和@score.setter的用法
@property 把属性装饰成get方法 给属性赋值时,会自动调用@property装饰的方法 只设置属性的@property 时,属性为只读 @score.setter 把属性装饰成set方法 给 ...
- There is no getter for property named xxx' in 'class java.lang.xxx'
在xxxMapper.xml我们使用sql片段来提高sql代码的复用性,当时新手传入参数时常常出现这样的错误: There is no getter for property named xxx' i ...
- Mybatis异常There is no getter for property named 'XXX' in 'class java.lang.String'
1.当入参为 string类型时 (包括java.lang.String.) 我们使用#{xxx}引入参数.会抛异常There is no getter for property named 'XX ...
- Mybatis中传参包There is no getter for property named 'XXX' in 'class java.lang.String'
Mybatis中传参包There is no getter for property named 'XXX' in 'class java.lang.String' 一.发现问题 <select ...
- @property和@x.setter和@x.deleter表示可读可写可删除
@property可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/deleter也是需要的.1>只有@property表示只读.2>同时有@ ...
- Configuration property name 'xxx' is not valid
目录 问题 解决 问题 程序出错:Configuration property name ‘xxx’ is not valid, Canonical names should be kebab-cas ...
- Mybatis报错: There is no getter for property named xxx
在mapper文件中函数的形参上加上注解. 例如: 出现了如下错误:核心错误提示就是There is no getter for property named xxx ### Error qu ...
- org.apache.ibatis.reflection.ReflectionException: There is no getter for property named XXX 异常的解决办法。(亲测,一次成功!) #Mybatis
今天在用Mybatis的时,写测试验证插入操作时出现错误org.apache.ibatis.reflection.ReflectionException: There is no getter for ...
- Python的property装饰器的基本用法
Python的@property装饰器用来把一个类的方法变成类的属性调用,然后@property本身又创建了另一个装饰器,用一个方法给属性赋值.下面是在类中使用了@property后,设置类的读写属性 ...
随机推荐
- INSTALL_FAILED_TEST_ONLY
查看博客:http://www.enjoytoday.cn/posts/159 Android studio安装apk无法安装,报错误,网上搜索可以看到都说是:* 调用者不被允许测试的测试程序*,但具 ...
- [20190524]DISABLE TABLE LOCK(12c).txt
[20190524]DISABLE TABLE LOCK(12c).txt --//如果禁止table lock时,一些ddl操作会被禁止.但是我有点吃惊的是增加字段不受限制.--//链接:http: ...
- DataGuard搭建逻辑StandBy
DataGuard搭建逻辑StandBy 原创 作者:bayaim 时间:2016-03-31 17:23:48 272 0删除编辑 物理StandBy优点是效率高,缺点是只读模式不能恢复,恢复模 ...
- windows10 设置 socks5 代理
这个很多年前就是这种方式了,最近配置又忘了,今天备份一下: 方法1: 方法2: 原文链接 如果能帮助到你,希望能点击右下角推荐,感谢!
- Linux 的 netstat 命令
转载 https://www.cnblogs.com/ct20150811/p/9432043.html 一般用 netstat -lnp |grep "程序名"
- 5-1可视化库Seabon-整体布局风格设置
In [1]: import seaborn as sns import numpy as np import matplotlib as mpl import matplotlib.pyplot a ...
- Java实现MapReduce Wordcount案例
先改pom.xml: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww ...
- 使用响应的json数据判断订单查询是否成功;
#查询中通快递import requestsrr=requests.session()headers={"User-Agent": "Mozilla/5.0 (Windo ...
- 提高python运行效率-numba
Numba是Python的即时编译器,在使用NumPy数组和函数以及循环的代码上效果最佳.使用Numba的最常见方法是通过其装饰器集合,这些装饰器可应用于您的函数以指示Numba对其进行编译.调用Nu ...
- 用Python爬取猫眼上的top100评分电影
代码如下: # 注意encoding = 'utf-8'和ensure_ascii = False,不写的话不能输出汉字 import requests from requests.exception ...