当前位置: 首页 > news >正文

学习日记0821组合 多态 封装

1 组合

  什么是组合:

    组合就是有一个对象它拥有一个属性,该属性是另一个对象

  

1 class Foo:
2     pass
3 class Bar:
4     pass
5 a= Foo()
6 b=Bar()
7 b.attrd = a

  为何要使用组合:

    通过向一个类添加属性的方式,可以将两个类联系在一起

2 多态于多态性

  什么是多态: 多态指的是一种事物的不同组合

  多态的精髓就是:统一

   不崇尚的方法:

import abc
class People(metaclass=abc.ABCMeta):
    @abc.abstractmethod            
    def a():
        pass
    @abc.abstractmethod
    def b():
        pass

class A(People):
    def a(): #此时格式被固定死了,必须有函数a和函数b
        print(a)
    def b():
        pass

  

  鸭子方法:

class People:          
    def a():
        pass
    def b():
        pass

class A):
    def a(): 
        print(a)
    def b():
        pass

3 封装

  什么是封装:

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

    装:向容器/名称空间中存入名字

  总结:

    1 __开头的属性没有真正的被隐藏,只是一种语法形式上的改写,并不是真正的限制外部的访问

    2 该变形只在定义的阶段进行一次,之后再添加的__开头的属性,不会再进行变形

    3 如果父类的属性不想被子类覆盖,就在属性的前面添加__

转载于:https://www.cnblogs.com/jianhaozhou/p/9511539.html

相关文章:

  • 基于名字自动发布之数据库(4)
  • 洛谷P2526 [SHOI2001]小狗散步(二分图匹配)
  • 关于Nginx负载均衡的6种策略
  • 阿里云和腾讯云搭建hadoop
  • 模块和包
  • Idea+maven+scala构建包并在spark on yarn 运行
  • linux基础语法
  • 谈谈如何通过linux系统RHCE考试
  • 漫谈计算机组成原理(八)原码、补码、反码
  • 【c】插入排序
  • 20180824Noip模拟赛10分总结
  • jquery 取id模糊查询
  • DBA:快速了解MySQL及语法
  • 回顾·数据分析的势道术
  • WPF中ListBox滚动时的缓动效果
  • Mysql数据库的条件查询语句
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • tab.js分享及浏览器兼容性问题汇总
  • 电商搜索引擎的架构设计和性能优化
  • 服务器之间,相同帐号,实现免密钥登录
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 数据可视化之下发图实践
  • ​Linux·i2c驱动架构​
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #{} 和 ${}区别
  • #NOIP 2014# day.2 T2 寻找道路
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (2015)JS ES6 必知的十个 特性
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (4)logging(日志模块)
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (四)模仿学习-完成后台管理页面查询
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)视频码率,帧率和分辨率的联系与区别
  • (转)项目管理杂谈-我所期望的新人
  • *上位机的定义
  • .bat文件调用java类的main方法
  • .md即markdown文件的基本常用编写语法
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .netcore 获取appsettings
  • @vue/cli脚手架
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法
  • [c]统计数字
  • [EFI]Atermiter X99 Turbo D4 E5-2630v3电脑 Hackintosh 黑苹果efi引导文件
  • [EFI]Dell Latitude-7400电脑 Hackintosh 黑苹果efi引导文件
  • [Java性能剖析]Sun JDK基本性能剖析工具介绍
  • [LeetCode刷题笔记]1 - 两数之和(哈希表)