类中@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的用法的更多相关文章

  1. @property和@score.setter的用法

    @property 把属性装饰成get方法 给属性赋值时,会自动调用@property装饰的方法 只设置属性的@property 时,属性为只读 @score.setter 把属性装饰成set方法 给 ...

  2. 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 ...

  3. 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 ...

  4. 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 ...

  5. @property和@x.setter和@x.deleter表示可读可写可删除

    @property可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/deleter也是需要的.1>只有@property表示只读.2>同时有@ ...

  6. Configuration property name 'xxx' is not valid

    目录 问题 解决 问题 程序出错:Configuration property name ‘xxx’ is not valid, Canonical names should be kebab-cas ...

  7. Mybatis报错: There is no getter for property named xxx

    在mapper文件中函数的形参上加上注解. 例如: 出现了如下错误:核心错误提示就是There is no getter for property named xxx     ### Error qu ...

  8. 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 ...

  9. Python的property装饰器的基本用法

    Python的@property装饰器用来把一个类的方法变成类的属性调用,然后@property本身又创建了另一个装饰器,用一个方法给属性赋值.下面是在类中使用了@property后,设置类的读写属性 ...

随机推荐

  1. Tomcat安装、使用(Windows)

    一.下载.安装 1.下载 进官网下载 : https://tomcat.apache.org/ 选择自己适合的版本.在这里演示的是下载 Tomcat 7(解压安装版). 2.解压.启动tomcat 解 ...

  2. 性能优化之mybatis实现接口的批量查询,减少数据库的查询消耗

    <select id="selectByTime" resultType="com.neo.xnol.api.activity.dto.ActivityMqmsgD ...

  3. 从server.xml看Tomcat容器的层次结构

    先来看一下server.xml的结构: <Server> ​ <Listener/> ​ <GlobalNamingResources> ​ <Resourc ...

  4. python的几个实例程序员节日快乐

    python的几个小实例 有参函数 def login(username, password): name = input("请输入您的姓名").strip() pwd = inp ...

  5. mysql-操作篇

    # ### mysqlctrl + l 清屏ctrl + c 终止[linux]service mysql start 启动mysqlservice mysql stop 停止mysqlservice ...

  6. web网页利用JavaScript实现对摄像头的调用

    实现效果: 代码如下: <!DOCTYPE html> <html lang="zh"> <head> <meta charset=&qu ...

  7. PLSQL Developer数据库连接和tnsname.ora的配置

    1.将资源解压,打开解压完成目录中的PLSQL Developer文件夹,双击plsqldev.exe图标打开PLSQL Developer. 打开help>>about中找到TNS Fi ...

  8. 修改postgresql 密码

    sudo -u postgres psql -c "alter user postgres password '123456';"

  9. 数据分析三剑客 numpy,oandas,matplotlib(2)

    Pandas的数据结构 导入pandas:  三剑客 import pandas as pd from pandas import Series,DataFrame import numpy as n ...

  10. JS的节流、防抖及使用场景

    前言 据说阿里有一道面试题就是谈谈函数节流和函数防抖. 糟了,这可触碰到我的知识盲区了,好像听也没听过这2个东西,痛定思痛,赶紧学习学习.here we go! 概念和例子 函数防抖(debounce ...