import导入模块会自动避免重复导入
异常捕获:正常情况下程序出现异常,程序会直接崩溃,不能接着往后执行,异常捕获就是为了让程序出现异常不崩溃,自己处理异常
-
语法
try:
可能会出现异常的代码块
except:
出现异常后执行的代码执行过程:先执行try中代码,执行过程中,若是遇到异常,程序不崩溃,直接执行except中代码,如果没有出现异常,不会执行except中代码,直接执行其他语句
try:
代码块1
except 错误类型:
代码块2先执行代码块1,如果在执行代码块1的过程中出现异常,检查出现的异常类型是否和except后面的异常类型一致,如果一致程序不崩溃,直接执行代码块2,如果不一致,程序崩溃,若没有异常,则执行其他语句
try:
代码块1
except (异常类型1,异常类型2...):
代码块2
try:
代码块1
except 异常类型1:
代码块2
except 异常类型2:
代码块3
#......
try:
可能会出现异常的代码
except:
出现异常后执行的代码
finally:
不管是否出现异常,都会执行的代码;#不管try中有没有异常,是否被捕获,都会执行finally中的代码,可以在这里做一些数据保存备份的操作
-
抛出异常
- 语法:raise 异常类型 异常类型可以是系统自带的,也可以是自定义的(要求异常类型必须是Exception的子类)
- 作用:让程序主动崩溃/报错
-
面向对象基础
-
编程思想
- 面向过程编程:考虑通过代码逐步去解决问题的思想
- 函数式编程:考虑是否能够有这样功能的一个函数
- 面向对象编程:考虑是否有一个类,拥有相应的功能和属性
-
类和对象
- 什么是类:类是拥有相同功能和相同属性的对象的集合
- 什么是对象:对象就是类的实例
-
类的声明:python中所有数据类型都是类,每种类型对应的数据都是对象,例如:int类是所有整数的集合(每个单独的整数都是int的对象);声明类就是自定义类型;类名:自己命名,标识符不能是关键字,见名知意,首字母大写,驼峰式命名
class 类名:
类的内容
-
-
类的内容:类的说明文档、属性、功能(方法:声明在类中的函数,方法就是函数)
-
方法:本质是声明在类中的函数,包括对象方法,类方法,静态方法。
- 对象方法:直接在类中声明的函数就是对象方法,每个方法有一个默认参数self,需要使用'对象.'的方式去调用;从语法上来说可以使用'类.'的方式去调用,但self参数会失去意义,不使用。方法中的默认参数self,在通过对象调用的时候,这个参数不用传参,系统会自动将当前对象传递给它,哪个对象调用的当前方法,self就是哪个对象。
- init方法:python所有类中都有一个特殊的对象方法:init(),(python中以两个下划线开头并以两个下划线结尾的方法叫魔法方法,这样的方法都不需要手动调用,系统会在需要的情况下自动调用);当通过类去创建对象的时候,系统会自动调用init方法,对对象进行初始化操作
- 构造方法:函数名和类名一样的方法是构造方法,python中不需要手动编写,声明类时,系统会自动创建这个类的构造方法,方法中会先在内存中开辟空间创建对象,然后用创建的对象调用init方法对对象进行初始化,初始化完成后返回对象;创建对象时需不需要参数、要几个参数看init方法;
- 属性:分为类的字段和对象属性;直接声明在类中的变量就是类的字段,通过'类.'的方式去获取,属性的值不会因为对象不同而不同,就可以使用类的字段;对象属性需要声明在init方法中,以'self.属性=值'的方式来调用,通过'对象.'的方式来使用,属性的值会因为对象不同而不同就使用对象属性
- 对象属性的操作(增删改查):
class Student:
slots = ('name', 'age') # 在这里可以设置对象属性取值范围,元组中存放字符串def __init__(self, name, age): self.name = name self.age = age
stu1 = Student('aaa', 18)
stu2 = Student('bbb', 20)查
print(stu1.name)
arg = 'name'
print(getattr(stu1, arg, '默认值')) # 属性名可以以变量传入,若不存在该属性名,则返回默认值增/改,属性存在修改属性的值,不存在则添加该属性和值,类似于字典
print(stu1.name)
stu1.name = 'ccc'
print(stu1.name)
arg = 'name'
setattr(stu1, arg, 'ddd')
print(stu1.name)
stu1.gender = 'male'setattr(stu1, 'gender', 'male')
删
del stu1.age
delattr(stu1, 'age')属性的操作只针对单个对象
在类中可以通过slots赋值来约束当前类的对象有哪些对象属性
- 内置类属性:声明类时系统自动给类添加的属性
-