设为首页 加入收藏

TOP

第十七天-面向对象03-类与类的关系(一)
2018-11-08 22:08:31 】 浏览:239
Tags:十七 面向 对象 03- 关系

 

# 依赖关系
# 在方法中给方法传递一个对象,把对象当成参数调用,此时类与类之间的关系是最弱的
 1 # 大象装冰箱
 2 class Elephant:
 3     def open(self,bx):  # 这里要放一个bx 依赖关系
 4         print("大象高高兴兴走到了冰箱面前")
 5         bx.kai()
 6 
 7     def zhuang(self):
 8         print("自己走进了冰箱")
 9 
10     def close(self,bx): # 这里要放一个bx 依赖关系
11         print("大象自己关闭了冰箱门")
12         bx.guan()
13 
14 class Ice:
15     def kai(self):
16         print("我是冰箱,我开门了")
17     def guan(self):
18         print("我是冰箱,我关门了")
19 
20 bx1 = Ice()
21 dx = Elephant()
22 dx.open(bx1) # 这里把bx1作为一个参数传递进去了 也就是 大象可指定任何一冰箱
23 dx.zhuang()
24 dx.close(bx1)
# 植物大战僵尸
 1 class Jiangs:
 2     @classmethod
 3     def zd(cls):
 4         print("战斗开始!")
 5 
 6     def __init__(self,name,hp,power):
 7         self.name = name
 8         self.hp  = hp
 9         self.power = power
10 
11     def chi(self,zw): # 把zw对象作为一个参数给chi调用
12         zw.hp -= self.power
13         print("%s对%s造成了%s伤害"%(self.name,zw.name,self.power))
14         print("%s还有%s血"%(zw.name,zw.hp))
15 
16 class Zhiw:
17     def __init__(self,name,power,hp):
18         self.name = name
19         self.power = power
20         self.hp = hp
21 
22     def da(self,js): # 把js对象作为一个参数给da调用
23         js.hp -= self.power
24         print("%s对%s造成了%s伤害" % (self.name, js.name, self.power))
25         print("%s还有%s血" % (js.name,js.hp))
26 
27 
28 zw1 = Zhiw("豌豆战士",50,300)
29 js1 = Jiangs("看报僵尸",1000,30)
30 
31 # Jiangs.zd()
32 # js1.chi(zw1)
33 # zw1.da(js1)
34 # js1.chi(zw1)
35 # zw1.da(js1)
36 # js1.chi(zw1)
37 # zw1.da(js1)

 

 

 

# 关联关系
# 两种事物必须是相互关联的,但在某些情况是可以更改的
 1 # 男女朋友
 2 class Boy:
 3     def __init__(self,name,girlfriend = None):
 4         self.name = name
 5         self.girlfriend = girlfriend
 6 
 7     def play(self):
 8         if self.girlfriend:
 9             self.girlfriend.happy() # 调用g的方法happy
10             print("%s和%s在玩游戏"% (self.name,self.girlfriend.name))
11         else:
12             print("没女朋友玩什么玩")
13 
14 class Girl:
15     def __init__(self,name):
16         self.name = name
17 
18     def happy(self):
19         print("有好玩的好开心")
20 
21 g = Girl("尼美")
22 b = Boy("尼玛",g) # g赋值给b对象的girlfriend属性
23 
24 # b.play()
25 # b.girlfriend = None # 突然有天闹掰了
26 # b.play()
# 老师和学生的关系,一对多,反过来一对一多对一
 1 class Teacher:
 2     def __init__(self,name,lst=None):
 3         self.name = name
 4         if lst == None: # 判断传递过来的参数是否为空
 5             self.lst = []
 6         else: # 不为空就等于列表
 7             self.lst = lst
 8 
 9     def tianjia(self,student): # 添加学生到列表
10         self.lst.append(student)
11 
12     def display(self): # 输出学生 s
13         for s in self.lst:
14             print(s.name)
15 
16 
17 class Student:
18     def __init__(self,num,name,teacher=None):
19         self.name = name
20         self.num = num
21         self.teacher = teacher
22 
23 
24 t = Teacher("小苍")
25 s1 = Student(1,"大张伟")
26 s2 = Student(2,"郭德纲")
27 s3 = Student(3,"岳云鹏")
28 s4 = Student(4,"薛之谦")
29 
30 # t.tianjia(s1)
31 # t.tianjia(s2)
32 # t.tianjia(s3)
33 # t.tianjia(s4)
34 #
35 # t.display()

 

# 聚合关系 代码上写法与关联一样
# 属于关联关系中的一种特例.不过侧重点是xxx和xxx聚合成xxx.各自有各自的声明
# 周期.如电脑.电脑里有CPU,硬盘,内存等等.电脑挂了.CPU还是好的.还是完整的个体
# 如下:
 1 # 各个类组合成电脑类,但分开又能是单独的个体
 2 
 3 class Computer:
 4 
 5     def __init__(self, cpu, memory, yingpan, zhuban, xianshiqi):
 6         pass
 7 
 8 class Cpu:
 9     pass
10 
11 class Memory:
12     pass

 

# 组合关系 代码上写法与关联一样
# 属于关联关系中的一种特例,写法上差不多.组合关系比聚合还紧密.如?,
# 人的大脑,心脏,各个器官.这些器官组合成一个?.这时.?如果挂了.其他的东西也跟着挂了.

# 关联关系 一对多,反过来一对一多对一 在如:商城购物、通讯软件等广泛使用



# 练习 帖子和评论
 1 class Tie:
 2     def __init__(self, title, content, author, time, pingl
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇python学习 day017打卡 类与类之.. 下一篇python基础 - 控制语句

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目