zoukankan      html  css  js  c++  java
  • 面向对象1

    一、面相过程编程

    核心是‘过程’二字,过程指做事的步骤,即先做什么再做什么。基于该编程思想编写程序,就好比一条工厂流水线,一种机械式的思维方式。

    • 优点:逻辑清晰,复杂的问题流程化,进而简单化

    • 缺点:可扩展性差

     

    二、面相对象编程

    核心是‘对象’二字,对象值得是特征与技能的结合体。基于该编程思想编写程序,就好比在创造世界,一种上帝式的思维方式。

    • 优点:可扩展性高

    • 缺点:编写程序的复杂度远高于面向过程编程思想

     

    三、程序中定义类和对象

    1. 定义类

    定义类的时候,类体代码会在类定义阶段立即执行,并且产生一个类的名称空间。类本身即是一个名称空间

     

       2. 定义对象

    调用类即可产生对象,调用类的过程,又称为类的实例化。

     

    四、类与对象中的属性

    1. 属性及查找顺序

      • 类的名称空间中存放的是对象共有的属性

      • 对象的名称空间中存放对象独有的属性

      • 查找属性的顺序:对象>>>类>>>报错

    2. init方法定制属性

      • 类在实例化对象时会自动触发init方法

    class Student:
        school = ‘Hogwarts’
    
        def __init__(self, name, age, gender):
            self.name = name
            self.age = age
            self.gender = gender
            
    stu = Student('Harry', '11', 'male')

    五、类和对象的绑定方法

    1. 类绑定方法

        类中定义的函数就是类的函数属性,类可以当做一个普通函数使用

    class Person:   
      role = 'person'  
      def walk(self):  
        print("person is walking...")
          
    print(Person.role) 
    Person.walk(1)
    print(Person.walk)  
        
    输出:
    person
    person is walking...
    <function Person.walk at 0x000001B7B2BBBD08>
    1. 对象绑定方法

    class Person:
        role = 'person'
        
        def walk(self):
            print("person is walking...")
        
    p = Person()
    print(p.role)
    p.walk()
        
    输出:
    person
    person is walking...    

    六、对象与对象之间的交互

     

    class Dog:
      def __init__(self, name, breed, aggressivity, life_value):
        self.name = name
        self.breed = breed
        self.aggressivity = aggressivity
        self.life_value = life_value
        
      def bite(self, enermy):
        enermy.life_value -= self.aggressivity
        msg = f'{self.name}咬了{enermy.name}一口,造成{self.aggressivity}点伤害'
        print(msg)
        
    dog1 = Dog('旺财', '哈士奇', 100, 1000)
    dog2 = Dog('来福', '柴犬', 200, 600)
        
    dog1.bite(dog2)
        
    输出:
    旺财咬了来福一口,造成100点伤害
  • 相关阅读:
    二进制安装postgresql
    php mongodb扩展安装
    coinbase交易冻结时间
    linux服务器及工具常用命令
    PM2下使用 执行npm命令
    phpstorm安装PHP_CodeSniffer
    TP5 save遍历更新,过滤相邻重复字段,问题汇总
    mysqlbinlog 数据恢复
    设计模式之状态机模式
    关于c++中sleep_for函数的总结分析
  • 原文地址:https://www.cnblogs.com/binyuanxiang/p/11643025.html
Copyright © 2011-2022 走看看