一、组合

  1. 什么是组合:

组合指的是某一个对象拥有一个属性,该属性的值是另外一个类的对象。

2. 为何要用组合

通过为某一个对象添加属性(属性的值是另外一个类的对象)的方式,可以间接地将两个类关联/整合/组合到一起

从而减少类与类之间代码冗余

二、多态:

1. 什么是多态

多态指的是同一种/类事物的不同形态

2. 为何要用多态

多态性:在多态的背景下,可以在不用考虑对象具体类型的前提下而直接使用对象

多态性的精髓:统一

python崇尚鸭子类型

三、封装:

1. 什么是封装

装:往容器/名称空间里存入名字

封:代表将存放于名称空间中的名字给藏起来,这种隐藏对外不对内

2. 为何要封装

【封装】

隐藏对象的属性和实现细节,仅对外提供公共访问方式。

【好处】

1. 将变化隔离;

2. 便于使用;

3. 提高复用性;

4. 提高安全性;

【封装原则】

1. 将不需要对外提供的内容都隐藏起来;

2. 把属性都隐藏,提供公共方法对其访问。

3. 如何封装

在类内定义的属性前加__开头(没有__结果)

总结:

1. __开头的属性实现的隐藏仅仅只是一种语法意义上的变形,并不会真的限制类外部的访问

2. 该变形操作只在类定义阶段检测语法时发生一次,类定义阶段之后新增的__开头的属性并不会变形

3. 如果父类不想让子类覆盖自己的属性,可以在属性前加__开头

四、property

property装饰器是用来将类内的函数属性伪装成数据属性

转载于:https://www.cnblogs.com/zjh009/p/9511652.html

Python学习之路_day_25(面向对象之封装/多态/组合)相关推荐

  1. Python学习之路9☞面向对象的程序设计

    Python学习之路9☞面向对象的程序设计 一 面向对象的程序设计的由来 见概述:http://www.cnblogs.com/linhaifeng/articles/6428835.html 二 什 ...

  2. Python学习之路—2018/7/14

    Python学习之路-2018/7/12 3.功能开发 3.3 设计博客首页 博客首页中最重要的就是中间的文章区域,所以我首先把文章区域设计出来,一开始并没有数据,如果用orm添加或者直接在数据库添加 ...

  3. python学习之路0x00

    Python学习之路0x00 在学习python之前,要知道什么是python? python是一种跨平台的计算机程序设计语言.是一种面向对象的动态类型语言,与c语言不同, c语言要编译后才能执行.而 ...

  4. python学习之路:python连接阿里云ODPS

    python学习之路:python连接阿里云ODPS 前言 本人最近在学习使用ODPS,希望把学习过程记录下来,方便自己查阅. 1.安装ODPS pip install ODPS 2.连接阿里云odp ...

  5. python之路 mysql 博客园_教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql...

    教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql Easy_install安装MySQLdb 很简单,以至于我不晓得该怎么说.一句话. sodu ...

  6. Python学习之路—2018/6/20

    Python学习之路-2018/6/20 1.模板语法之变量 views.py def index(request):import datetimes="gyq"l=[1,2,3] ...

  7. python 学习之路开始了

    python 学习之路开始了.....记录点点滴滴.... 转载于:https://www.cnblogs.com/chobit/p/6163287.html

  8. Python学习之路5☞文件处理

    Python学习之路5☞文件处理 一.文件处理流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 1 正趣果上果 2 Interesting fruit fruit 3 4 ...

  9. 我的Python学习之路(一)_Mr_Ouyang

    我的Python学习之路(一)_Mr_Ouyang 笔者按: 本文从18:55开始写作,至19:38中断,又从21:12始继续,至23:22写就. 共计耗时113分钟,总字数9081字,约80.4字/ ...

最新文章

  1. TensorRT-8量化分析
  2. 现在,Serverless 真的已经成熟了吗?
  3. DNS是如何工作—Vecloud微云
  4. Python_Mix*OS模块,序列化模块种的json,pickle
  5. 23、Power Query-XML与JSON数据获取
  6. 关于windows消息机制的猜想
  7. 华为3Com Quidway 2116-SI
  8. 魅族mx5游戏模式小熊猫_您不知道的5大熊猫技巧
  9. 创建线程都有哪些方式?— Callable篇
  10. android开发学习---开发一个简易的短信发送器
  11. Windows API数据类型表
  12. ARINC429数据总线简介
  13. 符号链接symlink_Linux中的Symlink教程–如何创建和删除符号链接
  14. 国内地图服务对比分析
  15. ssget 用法详解
  16. JAVA集成微信支付 周期扣费
  17. 【自然语言处理】词性标注
  18. golang: grpc: received message larger than max
  19. 让计算机u盘启动,U盘启动设置|电脑如何设置U盘启动?
  20. 达梦8初始化参数之BLANK_PAD_MODE

热门文章

  1. Linux下安装配置Jenkins
  2. HAProxy反向代理搭建discuz论坛
  3. 光伏农业七大问题不解决 投资者恐“先驱”变“先烈”
  4. Python基础6:深浅拷贝
  5. Java中如何判断某天是星期几
  6. 全国计算机棋类竞赛,自主招生认可的12类主流竞赛详解
  7. 飞船向上飞pygame用k_up_十分钟就能用Python教你开发出一个迷你打飞机的游戏
  8. C语言137页答案,综合化学实验答案题库(137页)-原创力文档
  9. Java并发包JUC的Lock锁讲解
  10. android钱包nfc功能,Android NFC(二)M1卡电子钱包功能