property属性
时间:2019-08-30
本文章向大家介绍property属性,主要包括property属性使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
property属性:一种用起来像是使用的实例属性一样的特殊属性,可以对应于某个方法
设置方式:
类属性 即:在类中定义值为property对象的类属性 ---推荐
1 class Money(object): 2 # 初始化空间 3 def __init__(self,money): 4 self.__money = money 5 # 获取价钱 6 def __getMoney(self): 7 return self.__money 8 # 设置价钱 9 def __setMoney(self,value): 10 if isinstance(value,int): 11 self.__money = value 12 else: 13 print("error:不是整数") 14 # 删除价钱 15 def __delMoney(self): 16 self.__money = None 17 return self.__money 18 # 创建property属性 19 # property(获取,设置,删除,介绍) 20 money = property(__getMoney,__setMoney,__delMoney,"价钱") 21 # 实例化对象 22 tao = Money(20) 23 # 获取价钱 24 print(tao.money) 25 # 设置价钱 26 tao.money = 100 27 print(tao.money) 28 # 查看属性介绍 29 print(tao.__class__.money.__doc__) 30 # 删除价钱 31 del tao.money 32 print(tao.money)
运行结果:
20 100 价钱 None
装饰器 即:
在类的实例方法上应用@property装饰器
Python中的类有经典类
和新式类
,新式类
的属性比经典类
的属性丰富。( 如果类继object,那么该类是新式类 )
经典类中只有获取 ,新式类中有3中方式
经典类:
1 class Goods: 2 @property 3 # price只传一个只就是它自己 4 def price(self): 5 return 100 6 7 8 #调用 9 obj = Goods(); 10 print(obj.price) # 自动执行 @price 修饰的 price方法,并获取方法的返回值
运行结果:
100
新式类:
新式类中的属性有三种访问方式,并分别对应了三个被@property、@方法名.setter、@方法名.deleter修饰的方法
由于新式类中具有三种访问方式,我们可以根据它们几个属性的访问特点,分别将三个方法定义为对同一个属性:获取、修改、删除
1 class Goods(object): 2 @property 3 # price只传一个只就是它自己 4 def price(self): 5 return 100 6 7 @property.setter 8 def price(self,value): 9 if isinstance(value,int): 10 self.price = value 11 else: 12 print("error:请输入整数") 13 14 @property.deleter 15 def price(self): 16 del self.price 17 18 19 #调用 20 obj = Goods() 21 obj.price # 自动执行 @property 修饰的 price 方法,并获取方法的返回值 22 obj.price = 123 # 自动执行 @price.setter 修饰的 price 方法,并将 123 赋值给方法的参数 23 del obj.price # 自动执行 @price.deleter 修饰的 price 方法
原文地址:https://www.cnblogs.com/yifengs/p/11437445.html
- .NET Core的文件系统[5]:扩展文件系统构建一个简易版“云盘”
- 全球15%工作将被自动化,中国1亿人将面临失业
- ASP.NET MVC的Model元数据提供机制的实现
- 清官难断家务事,人工智能却来介入家庭伦理大戏
- 使用Symfony的Console组件构建命令行程序
- 微软编程教育都在搞什么?从code.org到makecode,从Minecraft到Micro:bit
- 谷歌:通往完全自动驾驶之路
- 随时随地部署Kubernetes
- 使用CoreOs,Docker和Nirmata来部署微服务风格的应用程序
- 使用ACS和Kubernetes部署Red Hat JBoss Fuse
- 教你快速安装OpenShift容器平台3.6
- 面向开发者的Cloud Foundry
- 云数据库安全与农场和餐馆:知道来源的重要性
- 云数据库安全,农场和餐馆:知道你的来源的重要性
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux环境变量配置的完整攻略
- linux中使用boost.python调用c++动态库的方法
- linux下pip的安装步骤及使用详解
- CentOS7安装配置 Redis的方法步骤
- Linux下Oracle如何导入导出dmp文件详解
- Linux中samba服务器的搭建教程
- linux环境搭建图数据库neo4j的讲解
- Linux编程之ICMP洪水攻击
- linux搭建squid代理服务器的完整步骤
- 使用wget递归镜像网站
- 整理Linux中字符串的相关操作技巧
- Ubuntu 16.04下无法安装.deb的解决方法
- 关于linux中系统输入输出的管理详解
- Linux下IP设置脚本的实例及遇到问题解决办法
- Linux与Windows文件互传(VMWare)