类与类之间的关系

一.类与类之间的关系

  在世界中的事物与事物之间总会有一些练习

  在面向对象中,类与类之间也可以产生相关的关系

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()
原文地址:https://www.cnblogs.com/q767498226/p/10146649.html