类
面向对象
多继承
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⾄少有⼀个