🗒️Python面向对象编程5—对象之间的交互
00 分钟
2024-7-24
2024-7-27
type
status
date
slug
summary
tags
category
icon
password
😀
当你生成各种各样的对象之后,对象之间需要交互
 

代码

 

类与类之间的关系

大千世界,万物之间皆有规则和规律,我们的类和对象是对大千世界中的所有事物进行归类,那事物之间存在着相对应的关系.类与类之间也同样如此.在面向对象的世界中,类与类中存在以下关系: 1.依赖关系,狗和主人的关系 2.关联关系,你和你的女盆友的关系就是关联关系 3.组合关系,比聚合还要紧密.比如人的大脑,心脏,各个器官,这些器官组合成一个人.这时,人如果挂了,其他的东西也跟着挂 4.聚合关系,电脑的各部件组成完整的电脑,电脑里有CPU,硬盘,内存等。每个组件有自己的生命周期,电脑挂了,CPU还是好的,还是完整的个体 5.继承关系,类的三大特性之一,子承父业
 

依赖关系

狗和主人的关系可以理解为是一种依赖关系,如果没有主人,它就是流浪狗了,可能会死。
 

关联关系

 
 
部分代码解释
  • 三元条件运算符:
    • 三元条件运算符的语法为 X if condition else Y,意思是:如果 condition 为真,返回 X,否则返回 Y
  • 条件判断:
    • person == self.couple[0] 这个条件判断了 person 是否是 couple 列表中的第一个元素(即是否是情侣中的第一个人)。
  • 选择伴侣:
    • 如果 personcouple 列表中的第一个元素 (self.couple[0]),那么 partner 被赋值为 self.couple[1](即情侣中的第二个人)。
    • 如果 person 不是 couple 列表中的第一个元素,那么 partner 被赋值为 self.couple[0](即情侣中的第一个人)。
 
 

组合关系

由一堆组件构成一个完整得实体,组件本身独立,但是又不能自己运行,必须跟宿主组合在一起运行
 

继承关系

notion image
 

简单代码示例

 
 
 

重写父类方法

super使用方法:
 
 

多继承

不是所有语言都支持多继承,python,c++支持,java不支持
在python中,有两种类的写法,不同的写法采用的继承顺序不同
 
 
在python2中,经典类采用的是深度优先查找法,新式类采用的是广度优先
在python3中,无论经典类还是新式类,都是按照广度优先查找
 
python2默认都是经典类,只有显式继承了Object才是新式类
python3默认都是新式类,不必显式的继承Object
notion image
 

多继承C3算法

如何查看继承顺序?
 
 

封装关系

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了代码数据的安全性。封装的优点
1.良好的封装能够减少耦合。 2.类内部的结构可以自由修改, 3.可以对成员变量进行更精确的控制。 4.隐藏信息,实现细节。
【封装原则】 1.将不需要对外提供的内容都隐藏起来; 2.把属性都隐藏,提供公共方法对其访问。
 
 
私有属性
 
私有方法
 
如果非要从外部访问其实也有办法
实例创建以后无法创建私有属性
 
 
 
 

多态关系

有时一个对象会有多种表现形式,比如网站页面有个button按钮,这个button的设计可以不一样(单选框、多选框、圆角的点击按钮、直角的点击按钮等),尽管长的不一样,但它们都有一个共同调用方式,就是onClick()方法。我们直要在页面上一点击就会触发这个方法。点完后有的按钮会变成选中状态、有的会提交表单、有的甚至会弹窗。这种多个对象共用同一个接口,又表现的形态不一样的现象,就叫做多态(Polymmorphism)。
 
代码示例
 

通过抽象类来实现多态(最常用)

notion image
 
 
 
 

打赏

如果您觉得我的内容对你有所帮助,不要吝啬你的一键三连!如果你有能力的话也可以通过下面请我喝杯咖啡~金额您随意~如果对文章内容有任何疑问,欢迎在留言那里加V联系我~
notion image
上一篇
Python面向对象编程4—类属性的应用场景
下一篇
Python面向对象编程6—作业(校园管理系统)