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. [elk]kafka_elk

    kafka https://www.tutorialspoint.com/apache_kafka/apache_kafka_cluster_architecture.htm https://dzon ...

  2. MAC Gradle 下载的问题

    1.项目中 gradle/wrapper/gradle-wrapper.properties 中的变量 GRADLE_USER_HOME 可以在 ~/.bash_profile 中配置, 设置为 GR ...

  3. 浅析LRC歌词文件

    [时间:2018-12] [状态:Open] [关键词:字幕,LRC,歌词,lyric,文件格式] 0 引言 几年前(2010年左右),网络音乐流行与免费的时代,网上有大量的mp3,使用比较常见的播放 ...

  4. iOS 实现单个页面支持横竖屏,其他页面只能竖屏

    最近在自己的项目里面 有需要做一个需求 : app中某一个页面支持横竖屏, 而其他页面只能竖屏. 1 2 实现方法如下: 1 首先需要Xcode中选中支持的屏幕方向  2 Appdelegate中 . ...

  5. Direct3D 11 Tutorial 6:Lighting_Direct3D 11 教程6:灯光

    概述 在之前的教程中,世界看起来很无聊,因为所有对象都以相同的方式点亮. 本教程将介绍简单照明的概念及其应用方法. 使用的技术将是朗伯照明. 本教程的结果将修改前面的示例以包含光源. 该光源将附在轨道 ...

  6. dubbo+spring_maven 遇到的问题 Error creating bean with name '***': Instantiation of bean failed;

    Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error ...

  7. CustomDrawableTextView

    public class CustomDrawableTextView extends TextView{ //image width.height private int imageWidth; p ...

  8. java如何对List集合中的元素进行排序(请收藏)

    在java开发中有时候我们需要对List集合中的元素按照一定的规则进行排序,比如说有个Person的集合,我们要根据Person的age属性进行排序输出,这就需要用到Java中提供的对集合进行操作的工 ...

  9. linux环境,通过rpm删除mysql包,报错:error reading information on service mysqld: Invalid argument

    问题描述: 今天在做saltstack的练习,想要通过sls的方式,在远程进行mysql数据库的安装,发现无法通过service的方式启动数据库,然后就想给删除了重新进行安装,在通过rpm -e进行删 ...

  10. 误删除libc.so.6的解决

    最近安装一个软件需要glibc-2.17. 使用ldd --version 发现系统的glibc版本为 glibc-2.12,当时没有想到更好的方法,就尝试将系统的glibc版本修改为glibc-2. ...