博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 依赖关系 与关联关系
阅读量:7033 次
发布时间:2019-06-28

本文共 2689 字,大约阅读时间需要 8 分钟。

#简单版本(依赖关系)# class Daxiang():#     def open(self,door):#         print('我是大象,我想开门')#         door.open()#         print('谢谢,你帮我开门!!!')##     def zhuang(self):#         print('门已经开了,那我就进去了')#     def close(self,door):#         print('我已经进去了,帮我关门')#         door.close()#         print('谢谢帮我关门,我呀死了')## class Door:#     def open(self):#         print('我是门,是叫我开门吗?那我开了')##     def close(self):#         print('我是门,你确定关门吗?马上就关')## D = Door()# gg = Daxiang()# gg.open(D)# gg.zhuang()# gg.close(D)# # 以某个对象为主体,主体要使用副体的某个功能,任何的对象只要拥有这个功能的,都能成为这个副体 》》》 那么主体与副体的关系就是 依赖关系

 

加强版(依赖关系)

class Zombie:    def __init__(self,name,attrack,hp):        self.name = name        self.attrack = attrack        self.hp = hp    def Attrack_To_Plant(self,P):        P.hp -= self.attrack        if P.hp <= 0:            print('真惨,你一阵亡')        else:            print('注意,你还剩余的血量是%s' % P.hp)zicai = Plant('紫菜',10,100)  #创建一个植物的对象zombie1 = Zombie('僵尸1',5,100)#创建一个僵尸的对象zicai.Attrack(zombie1) #紫菜攻击僵尸1 一次zicai.Attrack(zombie1) #紫菜攻击僵尸1 一次zicai.Attrack(zombie1) #紫菜攻击僵尸1 一次zicai.Attrack(zombie1) #紫菜攻击僵尸1 一次zombie1.Attrack_To_Plant(zicai)#僵尸攻击紫菜

 

关联关系

class Person:    def __init__(self,name,Bag=None):        self.name = name        self.bag = Bag    def GTA(self):        if self.bag:            print('%s 你在干啥,还不带上你的%s去干啥'%(self.name,self.bag.name))        else:            print('连个包都没有,还能去哪')class BB:    def __init__(self,name):        self.name = namegg = Person('小明')New_bag = BB('书包')gg.bag = New_baggg.bag = 0gg.GTA()# 关联关系:主体的某个属性 是一个对象(副体) ,这个对象在赋值给主体的属性之后,相当属于主体的一部分,如果主体要使用副体的功能可以直接通过属性找到该对象之后,进行功能的调用就可以了

加强版(关联关系)

class Teacher:    def __init__(self,name,lst=None):        self.name = name        if lst == None:            self.lst = []        else:            self.lst = lst    def Append(self,s):        self.lst.append(s)class Student:    def __init__(self,No,name,age):        self.name = name        self.No = No        self.age = ageT1 = Teacher('小沈阳')print(T1.name)print(T1.lst)S1 = Student(1,'Luffy',18)S2 = Student(2,'Luffy2',18)S3 = Student(3,'Luffy3',18)S4 = Student(4,'Luffy4',18)T1.Append(S1)T1.Append(S2)for i in T1.lst:    print(i.name)
View Code

 

继承关系:self在访问方法时候,现在自己的命名空间查找,如果在自己的命名空间找不到的话,再到父类的命名空间

去查找,如果在父类都还找不到的话,就出相应的报错。

同时注意的是哪个对象一开始进行调用方法的,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 1111 2222 3
View Code

 

转载于:https://www.cnblogs.com/vivi0403/p/9932187.html

你可能感兴趣的文章
CDH-cdh5.8.3离线安装--Mysql5.7二进制部署
查看>>
flask request 对象
查看>>
【VMware虚拟化解决方案】Horizon-View GPU虚拟化
查看>>
Redis 对象
查看>>
Android应用程序获取ROOT权限的方法
查看>>
KVM主机在线增加硬盘爬坑记
查看>>
【Linxu学习004】Bash Shell 相关
查看>>
Linux 下的shell
查看>>
iptables 知识-filter表
查看>>
Windows平台视频显示问题
查看>>
python性能分析
查看>>
备份与还原---bacula简介
查看>>
Windows Live Writer Test
查看>>
My97DatePicker日期插件的常用功能说明
查看>>
fedora 25 Linux 上使用 backup-manager 进行系统备份
查看>>
我的友情链接
查看>>
读书笔记之顺序循环队列
查看>>
转型为一名数据科学家的正确打开方式
查看>>
SHELL中的for流程控制
查看>>
如何快速打造一款高清又极速的短视频APP?
查看>>