面向对象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...

 

  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点伤害

 

你可能感兴趣的:(面向对象1)