面向对象的三种关系:
1.依赖关系
A类(A类实例化对象)依赖B类(B类实例化对象)的意思就是B类实例化的对象名作为参数传递给A类(对象)的方法,那么在A类对象就可以用B类实例化对象的方法
1) 植物大战僵尸简易版
# 植物大战僵尸简易版
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)#20
# 僵尸攻击一次
js.eat(zw)
print(zw.hp)#15
2) 大象关冰箱
class Elephant:
def __init__(self, name):
self.name = name
def open(self, ref):
print('冰箱开门吧')
ref.open_door()
def close(self, ref):
print('冰箱关门吧')
ref.close_door()
def get_in(self):
print('进冰箱装自己')
class Refrigerator:
def open_door(self):
print('冰箱默默地打开了自己的门')
def close_door(self):
print('冰箱默默地关上了自己的门')
e = Elephant('小象')
ref1 = Refrigerator()
#大象进冰箱
e.open(ref1)
e.get_in()
e.close(ref1)
2.关联关系,又叫组合,聚合关系
A类和B类关联意思是B类对象作为参数传递给A中并且封装成了A对象的一个属性
1) 男朋友女朋友
class Boy():
def __init__(self,name,girlfirend = None):
self.name = name
self.girlfriend = girlfirend
def have_dinner(self):
if self.girlfriend:
print("%s和女朋友%s一起吃饭"%(self.name,self.girlfriend.name))
else:
print("自己吃饭")
class Girl():
def __init__(self,name):
self.name = name
Shawn = Boy("孙")
Chen = Girl("陈")
Shawn.have_dinner()
运行结果:自己吃饭
Shawn.girlfriend = Chen
Shawn.have_dinner()
运行结果:孙和女朋友陈一起吃饭
浙公网安备 33010602011771号