python之类与类之间的关系

2020-01-20 14:56:09 浏览数 (1)

在我们的世界中事物和事物之间总会有一些联系.   在面向对象中. 类和类之间也可以产生相关的关系

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在上课
'''

类中的关系: 依赖关系是最轻的. 最重的是继承关系. 关联关系是比较微妙的.

0 人点赞