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----类与类之间的关系的更多相关文章

  1. Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系

    Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 2. 类与对象之间 ...

  2. python 面向对象专题(二):类的空间问题、类与对象之间的关系、类与类之间的关系

    https://www.cnblogs.com/liubing8/p/11308127.html 目录 Python面向对象02/类的空间问题.类与对象之间的关系.类与类之间的关系 1. 类的空间问题 ...

  3. PHP类和对象之间的关系

    类是对象的描述: 类和对象之间的关系类似于建房子的图纸和房子: 创建类--new对象--用对象: 一.对象的两个特性: --对象的行为(功能):可以对对象施加操作,例如,电视机的开.关.转换频道: - ...

  4. JAVA面向对象-----接口与类、接口之间的关系

    接口与类.接口之间的关系 大家之前都知道类与类之间的关系继承,那么接口与类之间又是怎样子的关系呢? 接口与类之间是实现关系.非抽象类实现接口时,必须把接口里面的所有方法实现.类实现接口用关键字impl ...

  5. UML图类,接口之间的关系

    UML图类之间的关系(来自大话设计模式中的一张图,代表了类,接口之间的各种关系)

  6. python中,ascii,unicode,utf8,gbk之间的关系梳理

    在计算机中,经常遇到编码问题,本节主要梳理下ascii,unicode,utf8,gbk 这几种编码之间的关系. ASCII 计算机中,所有数据都以0和1来表示.在一开始的时候,要表示的内容比较少,人 ...

  7. python中type、class、object之间的关系

    先看一段代码 # -*- coding:UTF-8 -*- __autor__ = 'zhouli' __date__ = '2018/11/13 18:40' a = 1 b = 'abc' pri ...

  8. 关于package,import,和“找不到可以加载的主类”报错之间的关系

    正在回顾java基础 目录结构如下: 一 以下代码,进入Example所在的文件夹, javac和java都不会报错 public class Example{ public static void ...

  9. Java 中判断类和实例之间的关系

    判断类与实例的关系有以下三种方式 1.instanceof关键字,用来判断对象是否是类的实例 (对象 => 类 )   2.isAssignableFrom,用来判断类型间是否存在派生关系 (类 ...

  10. C# 多线程 类构造函数 类方法之间的关系

    先定一个类,既有构造函数又有类方法: public class WriteNumber { /// <summary> /// 构造函数 /// </summary> publ ...

随机推荐

  1. 51单片机stack堆栈

    一般编译器的堆栈用于保存局部变量.函数的参数.函数的返回值.中断上下文信息等.但Keil对局部变量.函数参数预先分配空间(放在静态全局变量区),Keil的堆栈只是用于保存函数嵌套调用的PC.中断上下文 ...

  2. 系统管理员需知的 16 个 iptables 使用技巧

    现代 Linux 内核带有一个叫 Netfilter[1] 的数据包过滤框架.Netfilter 提供了允许.丢弃以及修改等操作来控制进出系统的流量数据包.基于 Netfilter 框架的用户层命令行 ...

  3. 分析轮子(二)- << ,>>,>> (左移、右移、无符号右移)

    前言:写 分析轮子(一)-ArrayList.java 的时候看到源码中有 int newCapacity = oldCapacity + (oldCapacity >> 1); 这样的代 ...

  4. SNF软件开发机器人教程更新

    SNF开发机器人教程:链接:https://pan.baidu.com/s/1Qpomg11c_1b1NKY5P7e4Bw 密码:jwc3

  5. mongodb配置文件解说(转载)

    启动方式 ./bin/mongod -f mongodb.conf 会看到 about to fork child process, waiting until server is ready for ...

  6. moving-files-from-one-linux-server-to-another-using-scp

    https://www.tecmint.com/scp-commands-examples/ https://haydenjames.io/linux-securely-copy-files-usin ...

  7. SQL Server 2016新特性:Temporal Table

    什么是系统版本的Temporal Table 系统版本的Temporal Table是可以保存历史修改数据并且可以简单的指定时间分析的用户表. 这个Temporal Table就是系统版本的Tempo ...

  8. Spark基础

    1 读取本地文件 ./spark-shell scala> val textFile=sc.textFile("file:///home/hadoop/wordfile1.txt&qu ...

  9. OSPF进程号的意义及多进程OSPF

    OSPF进程号的意义及多进程OSPF—吴锦霖分享    1. OSPF进程号的概念 在配置OSPF时,我们采用的是router ospf命令,在该命令后面需要加上这个OSPF进程的进程号(Proces ...

  10. unix下ksh获取昨天的日期

    http://blog.chinaunix.net/uid-27795718-id-3347473.html 总结:使用了TZ以后,时间立刻变伦敦时间.如果你打算用"TZ=aaa24 dat ...