组合,多态,封装, @property
目录
- 组合
- 什么是组合
- 为什么使用组合
- 如何使用组合
- 多态
- 什么是多态
- 多态性
- - 好处
- 封装
- 封装是什么意思
- @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相关推荐
- 初始Java Java SE 包,继承,组合,多态,抽象类,接口
目录 包 1.静态导入 2.将类放到包中 3.包的访问权限控制 继承 基本语法: 注意事项: protected 关键字 final 关键字 组合 多态 向上转型: 动态绑定 方法重写 重写的规则 : ...
- Python-面向对象(组合、封装与多态)
一.组合 什么是组合? 就是一个类的属性 的类型 是另一个自定义类的 类型,也可以说是某一个对象拥有一个属性,该属性的值是另一个类的对象. 通过为某一个对象添加属性(这里的属性是另一个类的对象)的方式 ...
- Python全栈开发——面向对象的三大特性(继承 多态 封装)
1.继承 1.两层意思 改变和扩展(详细看随笔继承和组合) 2.多态(体现在运行时的状态) 1.不同的类可以调用相同的方法,得到不同的结果 2.实际上是继承的一种体现机制 class H2o:def ...
- C# 子类实例化基类 基类使用不了子类的方法_C#学习笔记09--构造方法/析构方法/继承/多态/封装...
一.构造方法 当创建一个类时, 系统会自动创建一个默认的无参构造方法, 这个方法和类同名, 在创建对象的时候自动调用. 默认的构造方法里面什么也没有, 重写之后就可以在创建对象的时候同时搞点事情了. ...
- python继承实现原理封装property
---恢复内容开始--- 在Python中继承顺序有两种:深度优先和广度优先 没有共同父类的继承: class E:def test(self):print('from E') class A(E): ...
- python学习day26 封装 property 类方法 静态方法 反射
封装 广义上面向对象的封装 :代码的保护,面向对象的思想本身就是一种 只让自己的对象能调用自己类中的方法 狭义上的封装 -- 面向对象的三大特性之一 属性 和 方法都藏起来 不让你看见 私有属性 cl ...
- JAVA多态/封装/接口/包/包的命名规则——java面向对象
Java 多态 多态是同一个行为具有多个不同表现形式或形态的能力. 多态的优点 消除类型之间的耦合关系 可替换性 可扩充性 接口性 灵活性 简化性 多态存在的三个必要条件 继承 重写 父类引用指向子类 ...
- SpringBoot Elasticsearch组合查询封装
最近项目组需要用到Elasticsearch,封装了ESQueryBuilder方便条件组合,结合ES工具类使用效果更佳,下面是ES工具类传送门: SpringBoot Elasticsearch工具 ...
- Python基础20-面向对象:静态、组合、继承与派生、多态、封装、反射、内置attr方法等
目录 静态 静态属性@property 类方法@classmethod 静态方法@staticmethod 组合 继承与派生 继承与派生 继承顺序 在子类中调用父类方法与super 多态 封装 反射 ...
最新文章
- Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)
- day24 面向对象与实例属性
- Qt Quick 中 QML 与 C++ 混合编程详解
- Class Diagram
- python中codecs_Python:如何使用codecs模块将unicode数据保存成gbk格式
- 这样做,RMAN备份速度可提高6倍!
- 你以为你懂MySQL索引?阿里的面试官:你还太嫩!
- 启动时间知多少?8款音视频类应用测评报告分析
- ug二次开发python_学习UG NX软件二次开发你必须具备这些基础!
- Linux 远程拷贝命令
- 优化Android手机的GPS定位系统,加速搜星,定位准确
- Jquery电子签名制作_jSignature
- 动物数据集+动物分类识别训练代码(Pytorch)
- UG编程常用刀路参数功能详解,值得收藏的内容
- 【动手学深度学习】06-ResNet解析
- 视频教程-Vue、Spring Boot开发小而完整的Web前后端分离项目实战-Java
- 机器学习-weka软件偶遇初相识
- 前端同学需要知道的产品经理职业能力要求与标准
- 我的物联网项目(十) 线下之战
- ZOJ Monthly, August 2012 题解