zoukankan      html  css  js  c++  java
  • day 016 面向对象---类与类的关系

    ---恢复内容开始---

    一  依赖关系(最轻的一种关系,在方法中引入另一个类的对象)                    

    class Elephant:
        def __init__(self,name):
            self.name=name
        def open(self,ab):  # 依赖关系  
            print("冰箱哥哥%s开门"  % self.name)  #  想要一个冰箱,是哪个冰箱没有指定
            # print(self)
            ab.open_door()  # 引入另一个变量 ab.为引入方式  
    # 由外界传递进来⼀个冰箱, 让冰箱开⻔. 这时. ⼤象不⽤背着冰箱到处跑.
    # 类与类之间的关系也就不那么的紧密了. 换句话说. 只要是有open_door()⽅法的对 象. 都可以接收运⾏ def jin(self): print(
    "我进冰箱了") def close(self,ab): print("冰箱哥哥关门") ab.close_door() class bingxaing: def open_door(self): print("冰箱自己打开们") # print(self) def close_door(self): print("冰箱自己关上了门") alex=Elephant("离散") #大象的名字属性 bx=bingxaing() #创建冰箱对像 alex.open(bx) #调用创建的对象 注意. 此时是把⼀个冰箱作为参数传递进去了. 也就是说. ⼤象可以指定任何⼀个 冰箱 alex.jin() alex.close(bx)

     ⼤象和冰箱之间就是依赖关系. 我⽤着你. 但是你不属于我. 这种关系是最弱的.

    二 关联关系, 组合关系,聚合关系

    这三个代码在写法上是一样的,但是,从含义上是不一样

    1 关联关系 : 两种食物必须是互相关联的,但是在某些特殊情况下是可以更改和更换的

    2 聚合关系.

    属于关联关系中的⼀一种特例例. 侧重点是xxx和xxx聚合成xxx. 各⾃自有各⾃自的
    声明周期. 比如电脑. 电脑⾥里里有CPU, 硬盘, 内存等等. 电脑挂了了. CPU还是好的. 还是
    完整的个体

    3 组合关系:

    属于关联关系中的⼀一种特例例. 写法上差不多. 组合关系比聚合还要紧密. 比
    如⼈人的⼤大脑, ⼼心脏, 各个器官. 这些器官组合成⼀一个⼈人. 这时. ⼈人如果挂了了. 其他的东⻄西
    也跟着挂了了.

    先看看关联关系的例子


    class
    boy: def __init__(self,name,xingge,girFriend=None): self.name=name self.xingge=xingge self.girFriend=girFriend def yujian(self,girl): self.girFriend=girl def chi(self): if self.girFriend: print("随便吃 %s和%s" % (self.name,self.girFriend.name)) else: print("单身狗,吃什么吃") class girl: def __init__(self,name): self.name = name def chi(self): print("%s在吃饭" % self.name) girl = girl("撒旦") boy=boy("李二","急撒") boy.chi() # 结果 :单身狗,吃什么吃 boy.yujian(girl) boy.chi() # 结果 : 随便吃 李二和撒旦 # boy.girFriend.name # 找到他的女友 # boy.girFriend.chi()

    例子二:

    class School:
        def __init__(self, name, address, phone):
            self.name = name
            self.address = address
            self.phone = phone
            self.__teach_list = []
    
        def zhaopin(self, t):
            self.__teach_list.append(t)
    
        def display(self):
            for el in self.__teach_list:
                print(el.name, el.hobby)
    
    
    
    
    class Teacher:
        def __init__(self, name, gender, salary, hobby, school):
            self.name = name
            self.gender = gender
            self.salary = salary
            self.hobby = hobby
    
            self.school = school
    
    oldboy_bj = School("北京老男孩", "美丽富饶的沙河", "10086")
    oldboy_sh = School("北京老男孩, 上海分校", "上海浦东", "10010")
    oldboy_sz = School("北京老男孩, 深圳分校(骑士计划)", "南山区", "10000")
    
    
    t1 = Teacher("配齐", "", 200000, "上课", oldboy_bj)
    t2 = Teacher("太白", "", 150000, "开车", oldboy_bj)
    t3 = Teacher("Eggon", "", 123456, "钻研技术", oldboy_sh)
    t4 = Teacher("高鑫", "", 45678, "相夫教子", oldboy_sz)
    t5 = Teacher("日天", "", 666, "看天", oldboy_sz)
    
    
    # print(t3.school.address) # 找到老师所在的学校的地址
    
    oldboy_bj.zhaopin(t1)
    oldboy_bj.zhaopin(t2)
    oldboy_bj.display()
    
    oldboy_sh.zhaopin(t3)
    
    oldboy_sz.zhaopin(t4)
    oldboy_sz.zhaopin(t5)
    
    oldboy_sz.display()

    三 继承关系  

                  子类在不影响⽗类的程序运行的基础上对父类进行的扩充和扩展. 这里.我们可以把父类被称为超类或

    者基类. 子类被称为派生类

  • 相关阅读:
    x-pack-crack
    ELK获取用户真实IP
    多层代理获取用户真实IP
    ELK帮助文档
    logstash filter plugin
    开源实时日志分析ELK平台部署
    消息队列集群kafka安装配置
    日志采集客户端 filebeat 安装部署
    rsync + inotify 同步
    【转】OpenWrt 防火墙/etc/config/firewall介绍
  • 原文地址:https://www.cnblogs.com/systemsystem/p/9715903.html
Copyright © 2011-2022 走看看