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 ...
随机推荐
- VS code配置go语言开发环境之自定义快捷键及其对应操作
VS code 配置 自定义快捷键 及其对应操作 由于 vs code 的官方 go 插件不支持像 goland 一样运行当前 go 文件, 只能项目 或者 package 级别地运行, 因此有必 ...
- MVC5 IIS7 403错误
问题背景 MVC5部署到IIS7中显示403错误. 解决方案 <system.webServer> → <modules> 节点下的 ApplicationInsightsWe ...
- 【原创 Hadoop&Spark 动手实践 9】Spark SQL 程序设计基础与动手实践(上)
[原创 Hadoop&Spark 动手实践 9]SparkSQL程序设计基础与动手实践(上) 目标: 1. 理解Spark SQL最基础的原理 2. 可以使用Spark SQL完成一些简单的数 ...
- Linux DMA Engine framework(3)_dma controller驱动
http://www.wowotech.net/linux_kenrel/dma_controller_driver.html
- URLSearchParams和axios的post请求(防忘记)
import axios from 'axios' Vue.prototype.axios = axios mounted () { let params = new URLSearchParams( ...
- 1.介绍(introduction)
这里主要记录一本书的学习过程: 条件独立: 意思是X和Y在given Z的情况下是独立的. 满足P(X,Y|Z) = P(X|Z)*P(Y|Z)以及P(X|Y,Z) = P(X|Z) 条件独立的一些性 ...
- 移动网页广告引入mraid.js使用指南
在网上找mraid相关资料,相对比较少,大多都是API介绍,概念介绍等,没有一份详细的移动端网页广告使用教程,经过自己两天的摸索,完成了开发的移动端网页版的广告加入mraid功能. 背景: 我开发了移 ...
- visual studio 2019密钥
企业版:BF8Y8-GN2QH-T84XB-QVY3B-RC4DF 专业版:NYWVH-HT4XC-R2WYW-9Y3CM-X4V3Y
- Python的循环导入问题
循环导入的最好的解决方法是从架构上优化,即调整模块和模块成员变量的设计.一个好的原则是:可导出的成员变量,都不应该依赖于导入进来的成员变量. 但是在业务开发的过程中,总会遇到通过架构层面解决不了的导入 ...
- 按位与(&)和按位或(|)
/** * 按位与 : & * 按位或 : | */ public class Demo { /** * 按位与: 为什么(5 & 9)的值等于1 * 按位或: 为什么(5 | 9)的 ...