• 类与类之间的关系


    一.类与类之间的关系

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

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

    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()
  • 相关阅读:
    【AtCoder Regular Contest 080E】Young Maids [堆][线段树]
    【AtCoder Grand Contest 007E】Shik and Travel [Dfs][二分答案]
    【Codeforces858F】Wizard's Tour [构造]
    【AtCoder Grand Contest 001F】Wide Swap [线段树][拓扑]
    【AtCoder Grand Contest 012C】Tautonym Puzzle [构造]
    【Foreign】动态规划 [分治][DP]
    【BZOJ2683】简单题 [分治][树状数组]
    【BZOJ4237】稻草人 [分治][单调栈]
    【BZOJ3745】Norma [分治]
    【BZOJ4552】【HEOI2016】排序 [二分答案][线段树]
  • 原文地址:https://www.cnblogs.com/q767498226/p/10146649.html
Copyright © 2020-2023  润新知