第十八天 面向对象程序设计的特点(二)

面向对象

多继承

class Parent2():
    print('我是第二个爹')

class Parent():
    print('我是第一个爹')
    
class SubClass(Parent, Parent2):
    print('我是子类')
    
#	
# 结果: 	我是第二个爹
#		    我是第一个爹
# 	        我是子类
#注意:类在定义的时候就执行类体代码,执行顺序是从上到下

__bases __可以获取当前类所有的父类 使用SubClass. __bases __

print(SubClass.__bases__)


(<class '__main__.Parent'>, <class '__main__.Parent2'>)

多态

将父类对象应用于子类的特征就是多态。比如创建一个螺丝类,螺丝类有两个属性:粗细和螺纹密度;然后在创建两类,一个是长螺丝,一个是短螺丝,并且他们都继承了螺丝类。这样长螺丝类和短螺丝类不仅具有相同的特征,还具有不同的特征。子类继承父类特征的同时,也具有了自己的特征,并且能够实现不同的效果,这就是多态的结构。

属性和方法

  • 类属性
  • 实例属性
  • 实例方法
  • 类方法
  • 静态方法(扩展)
 实现:

class Game(object):
    top_score = 0   # 游戏最高分,类属性

    @staticmethod
    def show_help():  # 静态方法
        print("帮助信息:让僵尸走进房间")

    @classmethod
    def show_top_score(cls):  # 类方法
        print("游戏最高分是 %d" % cls.top_score)

    def __init__(self, player_name):
        self.player_name = player_name  # 实例属性

    def start_game(self):  # 实例方法
        print("[%s] 开始游戏..." % self.player_name)
        
        Game.top_score = 999   # 使用类名.修改历史最高分
        
 测试:

# 1. 查看游戏帮助
Game.show_help()

# 2. 查看游戏最高分
Game.show_top_score()

# 3. 创建游戏对象,开始游戏
game = Game("小明")
game.start_game()

# 4. 游戏结束,查看游戏最高分
Game.show_top_score()

异常

异常简介

  • 程序在运⾏过程中可能会出现⼀些错误。⽐如: 使⽤了不存在的索引,两个不
    同类型的数据相加…这些错误我们称之为异常
  • 处理异常 程序运⾏时出现异常,⽬的并不是让我们的程序直接终⽌!Python
    是希望在出现异常时,我们可以编写代码来对异常进⾏处理

异常的传播

  • 当在函数中出现异常时,如果在函数中对异常进⾏了处理,则异常不会在进
    ⾏传播。如果函数中没有对异常进⾏处理,则异常会继续向函数调⽤传播。
    如果函数调⽤处处理了异常,则不再传播异常,如果没有处理则继续向调⽤
    处传播。直到传递到全局作⽤域(主模块)如果依然没有处理,则程序终⽌,并
    显示异常信息。
  • 当程序运⾏过程中出现异常以后,所有异常信息会保存到⼀个异常对象中。
    ⽽异常传播时,实际上就是异常对象抛给了调⽤处

异常对象

try语句
try:
代码块(可能出现错误的语句)
except 异常类型 as 异常名:
代码块(出现错误以后的处理⽅式)
except 异常类型 as 异常名:
代码块(出现错误以后的处理⽅式)
except 异常类型 as 异常名:
代码块(出现错误以后的处理⽅式)
 ....
else:
代码块(没出错时要执⾏的语句)

finally:
代码块(是否出错该代码块都会执⾏)
try是必须的 else有没有都可以
except和finally⾄少有⼀个
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页