Python 脚本编写实战 2

霍格沃兹测试学院

ceshiren.com

目录

  • 理解面向对象
  • 面向对象实战

面向对象

  • python 是一门面向对象的语言
  • 所谓的面向对象,就是在编程的时候尽可能的去模拟真实的现实世界
  • 按照现实世界中的逻辑去处理问题
  • 分析问题中参与其中的有哪些实体,这些实体应该有什么属性和方法
  • 如何通过调用这些实体的属性和方法去解决问题

面向对象实例

image

IDE 调试

image

面向对象基本概念

  • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法
  • 对象:类的实例
  • 实例化:创建一个类的实例,类的具体对象
  • 方法:类中定义的函数
  • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外
  • 局部变量:定义在方法中的变量,作用域为当前的方法
  • 实例变量:在方法内声明,需要加 self. 标识区分
  • 私有属性,不能通过对象直接访问,在类的方法中可以访问
  • 私有方法,不能通过对象直接访问,在类的方法中可以访问

实战 1

  • 第一个类 Bicycle(自行车)类
    • run() 方法,打印骑行公里数,骑行距离可以通过参数传入
  • 第二个类 EBicycle 继承自 Bicycle
    • volume(电量)属性
    • fill_charge(vol) 充电方法
    • run() 方法用于骑行,每骑行 10km 消耗电量 1 度
    • 当电量消耗尽时调用 Bicycle 的 run 方法骑行
    • 通过传入的骑行里程数,显示骑行结果

实战 1 需求分析

类的继承

  • 被继承者:父类,又叫基类、超类
  • 继承者:子类
    • 子类可以继承父类的公共属性和方法
    • 父类的私有属性、方法不会被子类继承,也不能被访问
    • 可以通过调用继承的父类的共有方法,间接的访问父类的私有方法、属性
    • 如果子类拥有和父类一样呢名字的方法,父类的方法将被覆盖(重写)

实战 2

  • 一个回合制游戏,有两个英雄,分别是 EZ 和 JINX。
  • 每个英雄都有 hp 属性和 power 属性,分别代表血量和攻击力
  • EZ 初始值: hp,1100; power,190
  • Jinx 初始值: hp,1000; power,210
  • 每个英雄都有一个 fight 方法:
    • hero_final_hp = hero_hp - enemy_power
    • enemy_final_hp = enemy_hp - hero_power
    • 对比 hero_final_hp 和 enemy_final_hp,血量先为零的人输掉比赛

实战2 优化 – 继承

  • 后裔,后裔继承了 Hero 的 hp 和 power。并多了护甲属性。
  • 重新定义另外一个 defense 属性:
  • final_hp = hp + defense - enemy_power
  • enemy_final_hp = enemy_hp - power
  • 两个 hp 进行对比,血量先为零的人输掉比赛

推荐书籍和文档

课后作业