1. <em id="yud1w"><acronym id="yud1w"><u id="yud1w"></u></acronym></em>
      
      
      <button id="yud1w"></button>

      python

      当前位置:首页?>?python面向对象?>?当前文章

      python面向对象

      不同类对象之间的交互组合实例

      2020-10-05 55赞 python中国网
      每篇文章努力于解决一个问题!python高级、python面试全套、操作系统经典课等可移步文章底部。

        类是对生活的抽象和描述,生活中的事物彼此存在着关联,类与类之间也同样如此。今天介绍面向对象的世界中.类与类中的依赖、关联和组合关系。代码量大的时候,项目复杂的时候经常出现类与类之间纵横交错!

        1、依赖关系

      # -*- coding: utf-8 -*-
      
      class Girl:
          def __init__(self,name,p_obj):
              self.name = name
              self.person = p_obj  # laowang对象,name属性是laowang
      
          def tell_you(self):
              print("告诉你,{0}今晚和{1}约炮".format(self.name,self.person.name))
              
      
      class Man:
          def __init__(self,name):
              self.name = name
      
          def yue_pao(self,dog_obj):
              print("{0}约炮{1}".format(self.name,dog_obj.name ))
      
      
      if __name__ == "__main__":
      
          laowang = Man("laowang")
          girl = Girl("贱人张",laowang)
          girl.tell_you()
      
      
      
      告诉你,贱人张今晚和laowang约炮
      
      
      

        2、关联关系

      # -*- coding: utf-8 -*-
      
      class Status:
          # 这个类记录两个人的状态
      
          def __init__(self):
              self.two_man = []  # 追加对象进去
      
          def say(self, p1_obj, p2_obj):
              self.two_man.append(p1_obj)
              self.two_man.append(p2_obj)
              print("本人要讲{0}和{1}大战的事情" .format(p1_obj.name, p2_obj.name))
      
          # 两人比武后的结果
          def kill(self):
              if self.two_man:
                  print("{0}同归于尽{1}".format(self.two_man[0].name, self.two_man[1].name))
                  self.two_man.clear()
              else:
                  print("一人战死")
      
          # 查询对手是否活着
          def get_one(self, obj):
              for i in self.two_man:
                  if obj != i:  # 跟传进来的obj不相等,代表找到了另一个人
                      return i.name
              else:
                  print("两人都死,比武小组无人")
      
      
      class Person:
          def __init__(self, name,status_obj):
              self.name = name
              self.status = status_obj  # Status类的对象
      
          def compete(self):
              print("{0}要在英雄大会上和{1}比武".format(self.name, self.status.get_one(self.name)))
      
      
      status_obj = Status()
      p1 = Person("乔峰",status_obj)
      p2 = Person("鸠摩智",status_obj)
      # 两人加入列表
      status_obj.say(p1 ,p2)  # 2个人组合预备比武
      # 两人要比试
      p1.compete()
      # kill对方
      p1.status.kill()  # 一人战死
      p1.status.get_one(p2) # p1查询一下
      p2.status.get_one(p2) # p2查询下
      
      
      本人要讲乔峰和鸠摩智大战的事情
      乔峰要在英雄大会上和乔峰比武
      乔峰同归于尽鸠摩智
      两人都死,比武小组无人
      两人都死,比武小组无人
      
      
      

        3、组合关系(当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好)

      # -*- coding: utf-8 -*-
      
      class Desk:
          def __init__(self, color):
              self.color = color
      
      
      class Computer:
          def __init__(self, price):
              self.price = price
      
      
      class House:
          def __init__(self, master, desk, computer):
              self.name = master
              self.desk = desk
              self.course = computer
      
          def say(self):
              print('房屋主人是{1}的电脑价格是{0}元'.format(self.course.price,self.name))
      
      
      if __name__ == "__main__":
          desk_obj = Desk('黄色')
          computer_obj = Computer(6000)
          p1 = House('laowang',desk_obj,computer_obj)
          p1.say()
      
      
      房屋主人是laowang的电脑价格是6000元
      
      

      文章评论

      不同类对象之间的交互组合实例文章写得不错,值得赞赏
      国产99视频精品免视看6