1. 私有属性添加getter和setter方法

class Money(object):def __init__(self):self.__money = 0def getMoney(self):return self.__moneydef setMoney(self, value):if isinstance(value, int):self.__money = valueelse:print("error:不是整型数字")

2. 使用property升级getter和setter方法

class Money(object):def __init__(self):self.__money = 0def getMoney(self):return self.__moneydef setMoney(self, value):if isinstance(value, int):self.__money = valueelse:print("error:不是整型数字")money = property(getMoney, setMoney)
运行结果:In [1]: from get_set import MoneyIn [2]: In [2]: a = Money()In [3]: In [3]: a.money
Out[3]: 0In [4]: a.money = 100In [5]: a.money
Out[5]: 100In [6]: a.getMoney()
Out[6]: 100

3. 使用property取代getter和setter方法

@property成为属性函数,可以对属性赋值时做必要的检查,并保证代码的清晰短小,主要有2个作用

  • 将方法转换为只读
  • 重新实现一个属性的设置和读取方法,可做边界判定
class Money(object):def __init__(self):self.__money = 0@propertydef money(self):return self.__money@money.setterdef money(self, value):if isinstance(value, int):self.__money = valueelse:print("error:不是整型数字")运行结果In [3]: a = Money()In [4]: In [4]: In [4]: a.money
Out[4]: 0In [5]: a.money = 100In [6]: a.money
Out[6]: 100

属性property相关推荐

  1. 静态属性property的本质和应用

    一.本质 静态属性property本质就是实现了get,set,delete三种方法 class Foo:@propertydef AAA(self):print('get的时候运行我啊')@AAA. ...

  2. OC 实例变量(instance var)与属性(@property)的关系 isa指针

    实例变量(instance var)与属性(@property)的关系 Objective-C 2.0之后,声明一个@property name自动产生一个实例变量,名为_name,因此省去实例变量和 ...

  3. 区分元素特性attribute和对象属性property

    定义 元素特性attribute是指HTML元素标签的特性 下面的id.class.title.a都是特性,其中a叫做自定义特性 <div id="id1" class=&q ...

  4. py2neo的neo4j数据库增删改查节点node、关系relationship、属性property操作

    py2neo的neo4j数据库增删改查节点node.关系relationship.属性property操作 py2neo版本为4.3.0 设置节点和关系: # neo4j默认密码是neo4j,如有修改 ...

  5. 区别C#中的两个属性(Property和Attribute)

    区别C#中的两个属性(Property和Attribute) 在C#中有两个属性,分别为Property和Attribute,两个的中文意思都有特性.属性之间,但是用法上却不一样,为了区别,本文暂把P ...

  6. 秒懂Kotlin之彻底弄懂属性(Property)Part2

    [版权申明] 非商业目的注明出处可自由转载 博文地址: https://blog.csdn.net/ShuSheng0007/article/details/109071084 出自:shusheng ...

  7. Objective-C 2.0属性(Property)介绍

    通常在声明一些成员变量时会看到如下声明方式: @property (参数1,参数2) 类型 名字: 这里我们主要分析在括号中放入的参数,主要有以下三种: setter/getter方法(assign/ ...

  8. python描述符(descriptor)、属性(property)、函数(类)装饰器(decorator )原理实例详解

    2019独角兽企业重金招聘Python工程师标准>>> 1.前言 Python的描述符是接触到Python核心编程中一个比较难以理解的内容,自己在学习的过程中也遇到过很多的疑惑,通过 ...

  9. 【转载】Swift属性Property

    本文系转载 原文链接 Swift的属性与Objective-C中的属性是一样的,不同的是Swift细化了属性的类型,另外除了类之外,结构体和枚举也可以有属性. Swift中有这么几种属性: 存储属性( ...

最新文章

  1. LoRDEC: a tool for correcting errors in long sequencing reads 纠正长序列读取错误的工具
  2. SpringMVC传递multiple类型select后台Controller的接收方法
  3. 第二期冲刺站立会议个人博客15(2016/6/08)
  4. python中的栈结构_对Python列表进行封装和二次开发实现自定义栈结构
  5. java多线程中方法_java中多线程 - 多线程中的基本方法
  6. 用户 NT AUTHORITY\NETWORK SERVICE 登录失败解决方法
  7. 绑定dictionary 给定关键字不再字典中_VBA数组与字典解决方案第51讲:字典嵌套及二级下拉菜单的制作...
  8. nssl1143,jzoj3493-三角形【排序,数学,几何】
  9. No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=i386).
  10. 小伙用 12 张图讲明白了 Redis 持久化!
  11. idea中java文件红色处理
  12. Scheme学习系列二:调用C代码
  13. MySQL中boolean类型
  14. 股票历史数据-股票前复权数据下载
  15. fences卸载_fences是什么意思?WIN10专业版彻底删除fences的技巧
  16. 【深度学习】01 - 图像识别
  17. 【C++】Lambda 表达式详解
  18. CE进阶操作--自带小游戏TutorialGame的修改方法
  19. 【学习总结】ctf隐写初阶解题思路与方法
  20. 抖音上爆红的美女动态代码图如何实现?

热门文章

  1. go语言 os.Rename() cannot move the file to a different disk drive 怎么办
  2. JavaScript结合Bootstrap仿微信后台多图文界面管理
  3. MySQL 大表优化方案,收藏了细看!
  4. 不停止nginx服务的情况下替换nginx执行文件
  5. 网络分析仪-inSSIDer
  6. 一张图看完成都云栖大会的精彩,请用心感受!
  7. 网页统计所用到的名词解析
  8. 【JUnit】Junit命令行执行、参数化执行、Main方法执行
  9. crs-4124   Oracle 11gR2 RAC ohasd failed to start 解决方法
  10. Jeecg-Boot 一款基于SpringBoot 快速开发平台