封装之 property:

 property是一种特殊的属性,访问它时会执行一段功能(函数),然后返回值。 把类体的方法,通过property函数来装饰,装饰过的方法对象可以通过调用属性的方式来调用, 对象名 +‘.’+属性名

 例: BMI指数(bmi是计算而来的,但很明显它听起来像是一个属性而非方法,            如果我们将其做成一个属性,更便于理解)

成人的BMI数值:过轻:低于18.5正常:18.5-23.9过重:24-27肥胖:28-32非常肥胖, 高于32  体质指数(BMI)=体重(kg)÷身高^2(m)  EX:70kg÷(1.75×1.75)=22.86
 1 class PeopleBMI:
 2     def __init__(self,name,weight,height):
 3         self.name=name
 4         self.weight=weight
 5         self.height=height
 6
 7     @property
 8     def bim(self):
 9         """
10         定义bim方法
11         :return:
12         """
13         return self.weight / (self.height**2)
14 # 定义对象
15 yangwei=PeopleBMI('yangwei',62.5,1.7)
16 """
17 这样我们就可以直接加点来调用。
18 调用yangwei.bmi本质就是触发函数bmi的执行,
19 从而拿到其返回值
20
21 """
22 print(yangwei.bim)

通过调用property属性 又衍生了 setter 与 deleter 两个装饰器。

 1 class PeopleBMI:
 2     def __init__(self,name,weight,height):
 3         self.__name=name  #把name属性隐藏起来。
 4         self.weight=weight
 5         self.height=height
 6     @property
 7     def name(self):
 8         print('你正在访问用户名!')  # 我们可以加一系列逻辑判断。
 9         return self. __name
10
11     @name.setter  #按照原方法调用
12     def name(self,nname):
13         if type(nname)is not str:
14             raise TypeError('必须为str 类型')
15         self.__name=nname
16
17     @name.deleter
18     def name(self):
19         print('确认删除吗?')
20         del self.__name
21
22 obj=PeopleBMI('yangwei',62,1.7)
23 del obj.name
24 obj.name='egon'

View Code

转载于:https://www.cnblogs.com/yangwei666/p/8856175.html

面向对象----封装之proprty相关推荐

  1. JS面向对象一:MVC的面向对象封装

    JS面向对象一:MVC的面向对象封装 MDNjavascript面向对象 面向对象(Object-Oriented) 面向对象里面向的意思是以...为主,面向对象编程既以对象为主的编程. 面向对象的一 ...

  2. 面向对象-封装、继承、多态

    面向对象-封装.继承.多态 面向对象-封装 一.封装: private 数据类型 _名字;   --成员变量 public 默认一致 名字 属性 {  get{ return _名字; }  set{ ...

  3. javascript对XMLHttpRequest异步请求的面向对象封装

    对XMLHttpRequest异步请求的面向对象封装,需要的朋友可以参考下 function CallBackObject() { this.XmlHttp = this.GetHttpObject( ...

  4. php面向对象分页,PHP基于面向对象封装的分页类示例

    本文实例讲述了php基于面向对象封装的分页类.分享给大家供大家参考,具体如下: class page { protected $num;//每页显示条数 protected $total;//总记录数 ...

  5. python封装举例_Python面向对象封装操作案例详解

    本文实例讲述了Python面向对象封装操作.分享给大家供大家参考,具体如下: 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 ...

  6. Python基础day09【面向对象(封装、继承、多态)、重写、私有权限】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员] Python基础day09[面向对象(封装.继承.多态).重写.私有权限] Python基础day ...

  7. python-面向对象-05_面向对象封装案例 II

    面向对象封装案例 II 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象, ...

  8. Python之 面向对象封装案例

    面向对象封装案例 目标 封装 小明爱跑步 存放家具 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 ...

  9. python 面向对象的封装_Python面向对象封装操作案例详解

    本文实例讲述了Python面向对象封装操作.分享给大家供大家参考,具体如下: 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 ―― 将 属性 和 ...

最新文章

  1. 直接插入排序比较次数_插入排序(C++)
  2. C#_获取文件路径中的文件名_扩展名
  3. Excel学习使用教程
  4. Python的if条件语句(常用)当为多个判定条件时
  5. 【转】关于23种设计模式的有趣见解
  6. 拼多多台式计算机主机,拼多多电脑端直播常见问题及解决方案汇总
  7. mui 图片预览(3)
  8. 外贸群发软件不好用,邮件群发很苦恼
  9. python设计一个动物类_「Python」每日一练:设计圆类计算周长和面积、设计动物类...
  10. html如何让网页的字变小,网页的字变小了怎么办 网页字体调整方法【图文】
  11. 计算机windows无法加载怎么办,win7开机提示由于系统注册表文件丢失或损坏因此无法加载怎么办...
  12. java 动态规划找零钱_初探动态规划——LeetCode找零钱问题
  13. VS2022无法打开Silverlight 项目的问题:改用VS2015
  14. javascript获取FileUpLoad上传空间的文件大小
  15. vue移动端实现聊天功能
  16. 超详细的Tomcat性能监控及调优教程
  17. 2021-09-07 简单田忌赛马
  18. systemverilog中门类型-2-双向通过开关bidirectional pass switches
  19. 张家界三日游攻略 | 张家界三天怎么玩
  20. 听说你不想上班,想成为自由职业者

热门文章

  1. Facebook如何运用机器学习进行亿级用户数据处理
  2. 别在 Java 代码里乱打日志了,这才是正确的日志打印姿势!
  3. 几步教你轻松搭建一个Java Web项目
  4. 一起学设计模式 - 观察者模式
  5. 剑指offer_第20题_包含min函数的栈_Python
  6. 何凯明团队又出新论文!北大、上交校友教你用ViT做迁移学习
  7. Keras,亡于谷歌?
  8. 斯坦福连续发了四年的 AI 报告,今年讲了什么?
  9. 我室友拿到了字节50万年薪,太牛逼了
  10. 竞赛比完,代码、模型怎么处理?Kaggle 大神:别删,这都是宝藏