python摸爬滚打之day17----类与类之间的关系
1、类与类之间的联系
1.1 依赖关系
类A中使用了类B, 类B作为参数传进类A的方法中被使用. 这种关系中类与类之间的联系是最轻的.
class Elephant:
def open(self,ele): # ele 接收的是一个BingXiang的对象
print("我是大象,我会开门")
ele.kai()
def jinqu(self):
print("我是大象,我会自己进封闭容器")
def close(self,ele):
print("我是大象,我会关门")
ele.guan()
class BingXiang:
def kai(self):
print("我是冰箱,我会替别人开门")
def guan(self):
print("我是冰箱,我会替别人关门")
class DianFanBao:
def kai(self):
print("我是电饭煲,我会替别人开门")
def guan(self):
print("我是电饭煲,我会替别人关门")
bx = BingXiang()
dfb = DianFanBao()
e = Elephant()
e.open(bx)
e.jinqu()
e.close(dfb)
依赖关系
1.2 关联关系(组合关系,聚合关系)
三种关系写法是一样的, 但意义是不一样的.
关联关系: 类A和类B是互相关联的, 类A中使用了类B, 类B成为类A中的属性或成员. 关系程度要比依赖关系强点.
class Teacher:
def __init__(self,name,lst=None):
self.name = name
if lst == None:
self.lst = []
else:
self.lst = lst
def add_sd(self,obj):
self.lst.append(obj) # 将这几个学生对象添加进self.lst这个老师类的字段中,成为该属性的一部分.
class Student:
def __init__(self,name,numb,score):
self.name = name
self.numb = numb
self.score = score
s1 = Student("王大锤",1001,95)
s2 = Student("李二炮",1003,90)
s3 = Student("马老五",1004,88)
t = Teacher("张老师",[Student("二壮",1010,99)])
t.add_sd(s1)
t.add_sd(s2)
t.add_sd(s3)
for i in t.lst:
print(i.name)
关联关系
1.3 继承关系
见后续.
2、特殊成员方法
__new__() 构造方法, 在创建对象内存时调用.
__init__() 初始化方法, 往创建好的对象内存里存数据
__call__() 对象()时会被调用.
__dict__() 将类或者对象内存空间里的全部属性打包成字典的形式.
类: 有各种内部属性, 内部方法和一些静态字段, 方法之类的.
对象: 在自己的内存空间里只有自己的字段.
__str__() 在打印一个对象时默认会执行__str__()方法, 根据返回的结果进行打印.
__int__() 数据int()调用
__repr__() 一个字符串的官方表示形式
__getitem__() 对象[key]自动调用
__setitem__() 对象[key] = value自动调用
__delitem__() del 对象[key]时调用
__enter__() with打开文件时调用
__exit__() with关闭文件时调用
__add__() 两个对象相加
__len__() len(对象)时调用
__iter__() for循环时调用
__hash__() 哈希时调用
__lt__() 小于
__gt__() 大于
__le__() 小于等于
__ge__() 大于等于
__del__() 析构(删除清空对象)
python摸爬滚打之day17----类与类之间的关系的更多相关文章
- Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系
Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 2. 类与对象之间 ...
- python 面向对象专题(二):类的空间问题、类与对象之间的关系、类与类之间的关系
https://www.cnblogs.com/liubing8/p/11308127.html 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 ...
- PHP类和对象之间的关系
类是对象的描述: 类和对象之间的关系类似于建房子的图纸和房子: 创建类--new对象--用对象: 一.对象的两个特性: --对象的行为(功能):可以对对象施加操作,例如,电视机的开.关.转换频道: - ...
- JAVA面向对象-----接口与类、接口之间的关系
接口与类.接口之间的关系 大家之前都知道类与类之间的关系继承,那么接口与类之间又是怎样子的关系呢? 接口与类之间是实现关系.非抽象类实现接口时,必须把接口里面的所有方法实现.类实现接口用关键字impl ...
- UML图类,接口之间的关系
UML图类之间的关系(来自大话设计模式中的一张图,代表了类,接口之间的各种关系)
- python中,ascii,unicode,utf8,gbk之间的关系梳理
在计算机中,经常遇到编码问题,本节主要梳理下ascii,unicode,utf8,gbk 这几种编码之间的关系. ASCII 计算机中,所有数据都以0和1来表示.在一开始的时候,要表示的内容比较少,人 ...
- python中type、class、object之间的关系
先看一段代码 # -*- coding:UTF-8 -*- __autor__ = 'zhouli' __date__ = '2018/11/13 18:40' a = 1 b = 'abc' pri ...
- 关于package,import,和“找不到可以加载的主类”报错之间的关系
正在回顾java基础 目录结构如下: 一 以下代码,进入Example所在的文件夹, javac和java都不会报错 public class Example{ public static void ...
- Java 中判断类和实例之间的关系
判断类与实例的关系有以下三种方式 1.instanceof关键字,用来判断对象是否是类的实例 (对象 => 类 ) 2.isAssignableFrom,用来判断类型间是否存在派生关系 (类 ...
- C# 多线程 类构造函数 类方法之间的关系
先定一个类,既有构造函数又有类方法: public class WriteNumber { /// <summary> /// 构造函数 /// </summary> publ ...
随机推荐
- Atitit 数据库排除某一列 字段 显示
Atitit 数据库排除某一列 字段 显示 GROUP_CONCAT 行列转换 mysql利用group_concat()合并多行数据到一行_Mysql_脚本之家 sELECT GROUP_CO ...
- SSL SSH
http://www.91ri.org/13679.html https://www.linux.com/blog/how-install-ssl-certificate-linux-server h ...
- 【iCore4 双核心板_uC/OS-II】例程十:信号量集
一.实验说明: 在实际应用中,任务常常需要与多个事件同步,即要根据多个信号量组合作用的结果来决定任务的运行方式.UCOSII为了实现多个信号量组合的功能定义了一种特殊的数据结构——信号量集. 二.实验 ...
- 使用C#的Conditional特性与Unity编辑器宏命令做条件编译
概要 在传统的C#项目中,用Conditional特性做条件编译时,需要在Visual Studio中项目的属性里添加上条件编译符号,用法参考这篇文章. 而在Unity项目中,条件编译符号需要在Uni ...
- 解决stackoverflow打开慢的问题
Stack Overflow是国外一个与程序相关的IT技术问答网站.类似于国内的segmentfault.程序员们对于这2个网站应该都不陌生.但是我们打开stackoverflow的时候,会发现打开速 ...
- Zookeeper系列六:服务器角色、序列化与通信协议、数据存储、zookeeper总结
一.服务器角色 1. Leader 1)事务请求的唯一调度者和处理者.保证事务处理的顺序性 事务请求:导致数据一致性的请求(数据发生改变).如删除一个节点.创建一个节点.设置节点数据,设置节点权限就是 ...
- laravel5.8笔记四:路由
laravel框架,必须先设置路由,才可以访问内部的控制器部分. 路由文件:routes/web.php. 基本路由 Route::get('/user', 'UserController@index ...
- pyCharm最新激活码(2018激活码)
首先输入新的License sever address 首先尝试处理方法是,针对过期会弹出激活框: 选择 Activate new license with License server (用lice ...
- shell脚本学习笔记(符号)
shell脚本的学习: 1.Shell的作用是解释运行用户的命令,用户输入一条命令,Shell就解释运行一条,这样的方式称为交互式(Interactive),Shell还有 一种运行命令的方式称为批处 ...
- 搭建Pypi转发服务
有时候有些正式环境的机器,不能访问外网,就只能在能访问外网的机器上搭建一个转发服务. 一.安装包 pip install flask_pypi_proxy flask_pypi_proxy 二.启动 ...