zoukankan      html  css  js  c++  java
  • Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系

    Python面向对象02/类的空间问题、类与对象之间的关系、类与类之间的关系

    1. 类的空间问题

    • 添加对象属性

      # 在类的__init__可以添加,在类的方法也可以添加,在类的外部也可以添加
      
      class Human:
          mind = '有思想的'
          def __init__(self, name, age):
              self.name = name
              self.age = age
          def eat(self,argv):
              Human.body = argv
              print('吃饭')
      
      sun = Human('张三', 18)
      sun.eat()
      print(sun.__dict__)
      sun.weight = 130
      print(sun.__dict__)
      
    • 添加类的属性

      # 类的内部
      sun.eat('有头有脸')
      
      # 类的外部
      Human.body = '有头四肢'
      print(Human.__dict__)
      

    2. 类与对象之间的关系

    • 查找顺序角度分析类与对象之间的关系

      对象空间与类空间有相同的名字, 对象. 肯定先从对象空间查找.
      
      查询顺序:  
       	 对象.名字: 对象空间  ______类对象指针_______--> 类空间 ---> 父类空间
       	 类名.名字: 类空间 -----> 父类空间
              
      1.每个对象都可以从类的空间去找,不可以去别的对象空间去找
      2.单向不可逆,类名不可以找到对象的属性
      3.__init__产生对象空间,不是空的,有一个对象指针
      

    3. 类与类之间的关系

    • 依赖关系:将一个类的类名或者对象传入另一类的方法中

      class Elephant:
         def __init__(self,name):
             self.name = name
         def open(self,obj):
             print(f'{self.name} 默念三声: 3,2,1 开门')
             obj.be_open()
         def close(self):
             print(f'{self.name} 默念三声: 3,2,1 关门')
      class Refrigerator:
         def __init__(self, name):
             self.name = name
         def be_open(self):
            print(f'{self.name}冰箱 被打开了')
         def be_close(self):
             print(f'{self.name}冰箱 被关闭了')
      
      qiqi = Elephant('奇奇')
      haier = Refrigerator('海尔')
      qiqi.open(haier)
      
    • 组合关系:将一个类的对象封装到另一个类的对象的属性中

      class Boy:
          def __init__(self, name, girlfriend=None):
              self.name = name
              self.girlfriend = girlfriend
          def have_a_diner(self):
              if self.girlfriend:
                  print(f'{self.name}请他的{self.girlfriend.age}岁的,{self.girlfriend.body}的女朋友{self.girlfriend.name}一起烛光晚餐')
              else:
                  print('吃什么吃')
          def girl_skill(self):
              print(f'{self.name}的女朋友的技能:')
              self.girlfriend.skill()
      class Girl:
          def __init__(self,name,age,body):
              self.name = name
              self.age = age
              self.body=body
          def skill(self):
              print(f'{self.name} 会做饭')
      
      ergou = Boy('二狗')
      qiao = Girl('乔', 58, '小钢炮')
      ergou.girlfriend = qiao
      ergou.have_a_diner()
      ergou.girl_skill()
      
    • 总结:依赖与组合让类与类产生关系,增强耦合性

  • 相关阅读:
    python 列表、元组、字典总结
    python 字典
    python 元组
    python 列表
    JMeter的作用域与执行顺序
    JMeter第一个实战
    JMeter录制的两种方法
    JMeter常用功能
    初识jmeter2
    handler的拒绝策略:
  • 原文地址:https://www.cnblogs.com/liubing8/p/11308127.html
Copyright © 2011-2022 走看看