目录

  • 组合

    • 什么是组合
    • 为什么使用组合
    • 如何使用组合
  • 多态
    • 什么是多态
    • 多态性
      • - 好处
  • 封装
    • 封装是什么意思
    • @property

组合

什么是组合

​ - 对象的某一个属性是另一个类的对象

class A:def __init__(self,B)self.B = B
class B:    passb = B()
a = A(B)

为什么使用组合

​ - 减少代码冗余

如何使用组合

多态

什么是多态

​ - 一类事物的多种形态

多态性

​ - 都有自己的特性,例如 ?,? 都会叫,叫就是他们的多态

​ - 崇尚鸭子类型(只要走路像鸭子【对象中有某个绑定方法】,那你就是鸭子)

​ - 不考虑对象类型的情况下使用实例(也就是使用对象中的相同名字的方法)

- 好处

​ -- 增加了程序的灵活性

​ -- 增加了程序的可扩展性

封装

封装是什么意思

​ - 就是把东西包起来,别人用不了,外部访问不到,但是在python中这个包装数据的箱子是纸做的,通过一些方法,比如下面说到的@property、@property.setter、@property.deleter,就可以实现对私有变量的获取,修改,删除

@property

  • 将被装饰方法伪装成一个数据属性,在使用的时候可以不加括号直接使用
  • 注意的一点:被伪装的方法只能有self这一个参数
class A:def __init__(self, x, y):self.x = xself.y = y@propertydef size(self):return self.x * self.ys = A(10,2)
print(s.size) # 区别就在于size加不加括号
  • @property的两个扩展应用 (装饰器)

    - 用于使用修改删除定义的私有变量

  • @property.setter
    @property.deleter

class A:def __init__(self):self.__x = 10self.__y = 20@property # 获取,不需要括号def size(self):return self.__x * self.__y@size.setter # 修改def size(self, t):self.__x -= t@size.deleter  # 删除def size(self):del self.__xs = A()    # 定义s对象
print(s.size)   # 运行size,执行__x 乘 __y
s.size = 100 # 修改 __x 减去 100
print(s.size)
del s.size      # 删除__x
print(s.__dict__)

转载于:https://www.cnblogs.com/xiongchao0823/p/11425126.html

组合,多态,封装, @property相关推荐

  1. 初始Java Java SE 包,继承,组合,多态,抽象类,接口

    目录 包 1.静态导入 2.将类放到包中 3.包的访问权限控制 继承 基本语法: 注意事项: protected 关键字 final 关键字 组合 多态 向上转型: 动态绑定 方法重写 重写的规则 : ...

  2. Python-面向对象(组合、封装与多态)

    一.组合 什么是组合? 就是一个类的属性 的类型 是另一个自定义类的 类型,也可以说是某一个对象拥有一个属性,该属性的值是另一个类的对象. 通过为某一个对象添加属性(这里的属性是另一个类的对象)的方式 ...

  3. Python全栈开发——面向对象的三大特性(继承 多态 封装)

    1.继承 1.两层意思 改变和扩展(详细看随笔继承和组合) 2.多态(体现在运行时的状态) 1.不同的类可以调用相同的方法,得到不同的结果 2.实际上是继承的一种体现机制 class H2o:def ...

  4. C# 子类实例化基类 基类使用不了子类的方法_C#学习笔记09--构造方法/析构方法/继承/多态/封装...

    一.构造方法 当创建一个类时, 系统会自动创建一个默认的无参构造方法, 这个方法和类同名, 在创建对象的时候自动调用. 默认的构造方法里面什么也没有, 重写之后就可以在创建对象的时候同时搞点事情了. ...

  5. python继承实现原理封装property

    ---恢复内容开始--- 在Python中继承顺序有两种:深度优先和广度优先 没有共同父类的继承: class E:def test(self):print('from E') class A(E): ...

  6. python学习day26 封装 property 类方法 静态方法 反射

    封装 广义上面向对象的封装 :代码的保护,面向对象的思想本身就是一种 只让自己的对象能调用自己类中的方法 狭义上的封装 -- 面向对象的三大特性之一 属性 和 方法都藏起来 不让你看见 私有属性 cl ...

  7. JAVA多态/封装/接口/包/包的命名规则——java面向对象

    Java 多态 多态是同一个行为具有多个不同表现形式或形态的能力. 多态的优点 消除类型之间的耦合关系 可替换性 可扩充性 接口性 灵活性 简化性 多态存在的三个必要条件 继承 重写 父类引用指向子类 ...

  8. SpringBoot Elasticsearch组合查询封装

    最近项目组需要用到Elasticsearch,封装了ESQueryBuilder方便条件组合,结合ES工具类使用效果更佳,下面是ES工具类传送门: SpringBoot Elasticsearch工具 ...

  9. Python基础20-面向对象:静态、组合、继承与派生、多态、封装、反射、内置attr方法等

    目录 静态 静态属性@property 类方法@classmethod 静态方法@staticmethod 组合 继承与派生 继承与派生 继承顺序 在子类中调用父类方法与super 多态 封装 反射 ...

最新文章

  1. Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)
  2. day24 面向对象与实例属性
  3. Qt Quick 中 QML 与 C++ 混合编程详解
  4. Class Diagram
  5. python中codecs_Python:如何使用codecs模块将unicode数据保存成gbk格式
  6. 这样做,RMAN备份速度可提高6倍!
  7. 你以为你懂MySQL索引?阿里的面试官:你还太嫩!
  8. 启动时间知多少?8款音视频类应用测评报告分析
  9. ug二次开发python_学习UG NX软件二次开发你必须具备这些基础!
  10. Linux 远程拷贝命令
  11. 优化Android手机的GPS定位系统,加速搜星,定位准确
  12. Jquery电子签名制作_jSignature
  13. 动物数据集+动物分类识别训练代码(Pytorch)
  14. UG编程常用刀路参数功能详解,值得收藏的内容
  15. 【动手学深度学习】06-ResNet解析
  16. 视频教程-Vue、Spring Boot开发小而完整的Web前后端分离项目实战-Java
  17. 机器学习-weka软件偶遇初相识
  18. 前端同学需要知道的产品经理职业能力要求与标准
  19. 我的物联网项目(十) 线下之战
  20. ZOJ Monthly, August 2012 题解

热门文章

  1. git常用命名行总结
  2. Word 最后一页无法删除-解决办法
  3. 【神经网络】Dependency Parsing的两种解决方案
  4. 获取iframe中的contentWindow
  5. iOS 集成银联支付swift
  6. 算法学习:强连通分量 --tarjan
  7. Java通过JDBC连接SQL Server2017数据库
  8. RNN梯度消失和爆炸的原因 以及 LSTM如何解决梯度消失问题
  9. sqlite 使用 cte 及 递归的实现示例
  10. Jquery_如何扩展方法