在我们的世界中事物和事物之间总会有一些联系. 在面向对象中. 类和类之间也可以产生相关的关系
1. 依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻的. 随时可以更换另外一个东西来完成此操作
代码语言:javascript复制class Person:
def play(self, tools):
tools.run()
print('终于能打游戏了')
class Computer:
def run(self):
print('电脑已经打开,DNF已经登陆')
class Phone:
def run(self):
print('王者荣耀已经登陆')
c = Computer()
PH = Phone()
p = Person()
p.play(c)
# 电脑已经打开,DNF已经登陆
# 终于能打游戏了
p.play(PH)
# 王者荣耀已经登陆
# 终于能打游戏了
2. 关联关系 在对象里面埋对象 1. 一对一关系
代码语言:javascript复制class Boy:
def __init__(self, name, girlFriend=None):
# 在初始化的时候可以给一个对象的属性设置成另一个类的对象
self.girlFriend = girlFriend # 一个男孩有一个女朋友
def chi(self):
if self.girlFriend:
print(f"带着他的女朋友{self.girlFriend.name}去吃饭")
else:
print("单身狗, 吃什么吃? 滚去学习.")
def movie(self):
if self.girlFriend:
print(f"带着他的女朋友{self.girlFriend.name}去看电影")
else:
print("单身狗, 看什么看? 滚去学习.")
class Girl:
def __init__(self, name):
self.name = name
b = Boy("宝浪")
g = Girl("ABC")
b.chi() # 单身狗, 吃什么吃? 滚去学习.
# alex给包浪介绍了一个女朋.
b.girlFriend = g
b.chi() # 带着他的女朋友ABC去吃饭
g2 = Girl("QWER")
b.girlFriend = g2 # 换了个女朋友
b.chi() # 带着他的女朋友QWER去吃饭
2. 一对多关系
代码语言:javascript复制# 一对多
class School:
def __init__(self, name):
self.teach_list = []
def zhaopin(self,teach):
self.teach_list.append(teach)
def shagnke(self):
for t in self.teach_list:
t.work()
class Teacher:
def __init__(self, name):
self.name = name
def work(self):
print(f'{self.name}在上课')
x = School('xxx学校')
t1 = Teacher('教师1')
t2 = Teacher('教师2')
t3 = Teacher('教师3')
t4 = Teacher('教师4')
x.zhaopin(t1)
x.zhaopin(t2)
x.zhaopin(t3)
x.zhaopin(t4)
x.shagnke()
'''
教师1在上课
教师2在上课
教师3在上课
教师4在上课
'''
类中的关系: 依赖关系是最轻的. 最重的是继承关系. 关联关系是比较微妙的.