一.类与类之间的关系
在世界中的事物与事物之间总会有一些练习
在面向对象中,类与类之间也可以产生相关的关系
1.依赖关系
执行某个方法的时候,需要别的类来帮助你完成这个方法.这种关系最不紧密,因为随时可以更换另一个类来完成此方法
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) p.play(ph)
2.关联关系
两个类必须是互相关联的,但是在某些特殊情况下是可以更改和更换的.
1.一对多关系
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 watch(self): if self.girlFriend: print(f"带着女朋友{self.girlFriend.name}去看") else: print("自己去看吧") class Girl: def __init__(self, name): self.name = name b = Boy("I") g = Girl("beautiful girl") b.girlFriend = g # 看好等效效果 b.chi() g1 = Girl("佟丽娅") b.girlFriend = g1 # 换了一个 b.chi() b.watch()
2.一对多
class School: def __init__(self, name): self.teach_list = [] self.name = name def ZhaoPin(self, teach): self.teach_list.append(teach) def ShangKe(self): for t in self.teach_list: t.work(self.name) class Teacher: def __init__(self, name): self.name = name def work(self,school): print(f"{self.name}在{school}上课") ob = School("北大") t1 = Teacher("涛涛1") t2 = Teacher("涛涛2") t3 = Teacher("涛涛3") t4 = Teacher("涛涛4") ob.ZhaoPin(t1) ob.ZhaoPin(t2) ob.ZhaoPin(t3) ob.ZhaoPin(t4) ob.ShangKe()
3.继承关系
父类 = 基类 = 超类 一个东西不同的名字
子类 = 派生类
class Base: # 父类 = 基类 = 超类 一个东西 def chi(self): print("我会吃") class Foo(Base): # 子类 = 派生类 一个东西 def he(self): print("我会喝") f = Foo() f.chi() f.he()