一、面相过程编程

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

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

  • 缺点:可扩展性差

二、面相对象编程

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

  • 优点:可扩展性高

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

三、程序中定义类和对象

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

优质内容筛选与推荐>>
1、QT 问题提问网站
2、csharp实现MongoDB的增删改查
3、vue-cli 2.0 3.0区别
4、【转】在做性能测试之前需要知道什么
5、DataFrame创建


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn