一、依赖关系(紧密程度最低)

  (1)简单的定义:就是方法中传递一个对象。此时类与类之间存在依赖关系,此关系比较低。

  (2)实例植物大战僵尸简易版

    题目要求:创建一个植物,创建一个僵尸

        1、植物:名字、血量,攻击力

        2、僵尸:名字、血量、攻击力

        3、植物可以打僵尸,僵尸掉血

        4、植物被僵尸咬,植物掉血      

# 植物大战僵尸简易版
class ZhiWu:#创建植物类
def __init__(self,name,hp,attack):#初始化属性
self.name=name
self.hp=hp
self.attack=attack
def da(self,js):
js.hp-=self.attack class JiangShi:#创建僵尸类
def __init__(self,name,hp,attack):#初始化属性
self.name=name
self.hp=hp
self.attack=attack
def eat(self,zw):
zw.hp -= self.attack
# 创建僵尸和植物对象
zw=ZhiWu("紫罗兰",20,10)
js=JiangShi("躺尸",30,5)
# 植物攻击一次
zw.da(js)
print(js.hp)#
# 僵尸攻击一次
js.eat(zw)
print(zw.hp)#

二、关联关系(组合、聚合)

  1、简单的定义:两种事物必须是相互关联的,在某种特殊情况下是可以更改和更换的 。

  2、聚合关系:属于关联关系中的特例,重点是xx和xx聚合成的xxx。各个零部件也可以单独工作。

  3、组合关系:组合关系是比较紧密的一种关系,一损俱损。

  4、常见格式(一对一或者一对多模式)    

def __init__(self,name,xxxlist=None);
self.name=name
self.xxxlist=xxxlist def __init__(self,name,teacher=None):
self.teacher=tercher

  5、实例:老师和学生模型(老师对学生是一对多,学生对老师是一对一)

# 创建老师类 老师能选学生
class Teacher:
def __init__(self,name,stu_lst=None):
self.name=name
if stu_lst:# 判断传递过来的参数是否是空
self.stu_lst=stu_lst
else:
self.stu_lst=[]
def tianjia(self,stu):#添加学生功能
self.stu_lst.append(stu.name)
def display(self):#显示老师对应的学生
for i in self.stu_lst:
print(i,end=",")
# 创建学生类
class Student:
def __init__(self,num,name,teacher=None):
self.num=num
self.name=name
self.techer=teacher
# 创建1个老师,5个学生
t=Teacher("黄日中")
s1=Student(1,"郭德纲")
s2=Student(2,"岳云鹏")
s3=Student(3,"张杰")
s4=Student(4,"谢啦")
s5=Student(5,"沈腾")
# 添加学生
t.tianjia(s1)
t.tianjia(s2)
t.tianjia(s3)
t.tianjia(s4)
t.tianjia(s5)
# 显示老师学生列表
t.display()#郭德纲,岳云鹏,张杰,谢啦,沈腾,

三、简单的继承

  核心self:谁调用,self就是谁。

class Base:
def __init__(self, num):
self.num = num def func1(self):
print(self.num)
self.func2() def func2(self):
print(111, self.num) class Foo(Base):继承
def func2(self):
print(222, self.num) lst = [Base(1), Base(2), Foo(3)]
for obj in lst:
obj.func2() #结果111 1 111 2 222 3
class UserInfo(object):
pass class Department(object):
pass class StarkConfig(object):
def __init__(self, num):
self.num = num
def changelist(self, request):
print(self.num, request)
def run(self):
self.changelist(999) class RoleConfig(StarkConfig): #继承 StarkConfig
def changelist(self, request):
print(666, self.num) class AdminSite(object):
def __init__(self):
self._registry = {} #空字典
def register(self, k, v):
self._registry[k] = v(k) site = AdminSite()
site.register(UserInfo, StarkConfig)
site.register(Department, RoleConfig)
# site._registry{UserInfo:StarkConfig(UserInfo),Department:RoleConfig(Department)}
for k, row in site._registry.items():
row.run()
# UserInfo,999 666,Department

四、类里面的特殊成员

  1、类名() 会自动执行__new__(cls,*args,**kwargs)  创建对象,开辟内存

  2、类名()会自动执行__init__(self)  对象初始化

  3、对象()会自动执行__call__( )

  4、对象[key]会自动执行__getitem__( )

  5、对象[k]=value 会自动执行 __setitem__( )

  6、del 对象[key] 会自动执行 __delitem__( )

  7、对象+对象 会自动执行 __add__( )

  8、with 对象 as 变量 会自动执行 __enter__( )和__exit__( )

  9、干掉hash __hash__ ==None  对象就不可以hash

  10、对象可以迭代  __iter__( )

  

  

        

  

python 类与类之间的关系的更多相关文章

  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. Java 中判断类和实例之间的关系

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

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

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

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

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

  9. java 类与类之间的关系 及uml图

    类与接口之间的关系 : 继承 类与类之间的关系 :继承关系  包含关系 类与对象之间的关系 : 实例 UML 类图中类与类之间的关系: 泛化关系(generalization) 关联关系(associ ...

  10. 2.java面向对象类与类/类与对象之间关系详解

    继承.实现.依赖.关联.聚合.组合的联系与区别 下面的内容很基础,同时也很简单,但是也很重要. 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功 ...

随机推荐

  1. 在vue中配置flow类型检查

    flow中文文档:https://zhenyong.github.io/flowtype/docs/objects.html#_ 1.安装flow npm install --save-dev flo ...

  2. 将Python脚本打包成可执行文件

    Python是一个脚本语言,被解释器解释执行.它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库.(Python官方的各种安 ...

  3. sqlserver count(1),count(*),count(列名) 详解

    sqlserver数据库 count(1),count(*),count(列名) 的执行区别 count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL count(1)包括 ...

  4. EF to Sqlite

    测试下来,使用到下面的版本: EF6.1 System.Data.SQLite.EF6.1.0.93.0 System.Data.SQLite.Core.1.0.93.0  注意事项: 设置Autoi ...

  5. MyISAM和InnoDB区别详解

    MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点 ...

  6. Java学习笔记之——内部类

    内部类 形式:把一个类定义在一个类的内部. 分为:成员内部类和匿名内部类重点掌握 a) 成员内部类 b) 静态成员内部类 c) 匿名内部类 d) 局部内部类 (1)成员内部类: Java的语言是面向对 ...

  7. RabbitMQ 基本概念总结

    1.ack模式-应答模式 执行一个任务可能需要花费几秒钟,你可能会担心如果一个消费者在执行任务过程中挂掉了.一旦RabbitMQ将消息分发给了消费者,就会从内存中删除.在这种情况下,如果正在执行任务的 ...

  8. LINUX sed grep awk之间比较整理

    正则表达式基础 在最简单的情况下,一个正则表达式看上去就是一个普通的查找串.例如,正则表达式"testing"中没有包含任何元字符,,它可以匹配"testing" ...

  9. What does operator “dot” (.) mean?

    Question: Given the code : A = [1 2 3; 3 2 1] B = A.^2 The output : B = 1 4 9 9 4 1 But if I do this ...

  10. 构造方法为private与类修饰符为final

    构造方法为private的:在这个类外1:不能继承这个类2:不能用new来产生这个类的实例 在这个类内:1:可以继承这个类2:可以用new来产生这个类的实例 类修饰符为final的:在这个类外1:不能 ...