01
异常处理
常见错误表(表格搬运自鱼C工作室)
AssertionError:assert 是人为添加的检查点,当检查点后面的条件不成立的时候弹出AssertionError
AttributeError:方法或者属性未定义或者输错时,会弹出这个错误提示
IndexError:索引错误要注意列表是从0开始
KeyError:键出错或不存在,看看字典增加元素或定义的时候有没有出错。可以用get方法来避免
SyntaxError:尤其注意中文输入法
TypeError:输出字符时未把数值转化为字符串就会导致这个错误
try - except语句处理异常:
try:
可能出现错误的语句块
except 错误原因1 as reason:
出现错误时应该执行的操作
可以选择输出reason也就是错误原因(注意要str(reason)再输出)
except 错误原因2 as reason:
...
except (错误原因3,错误原因4):
...
finally:
无论异常与否都会执行的语句
//如果错误原因不写那就是只要出错就执行相应操作
自己引发错误:raise Errorname
后面可以跟上对错误的解释:raise Errorname(对错误的解释)
02
else语句
else不仅可以用于选择结构的if-else组合,也可以用于while循环后形成while-else结构,else下的语句再while循环条件不成立时执行。当while中执行了break时else下语句不执行,直接跳出while-else结构。即:
while 条件成立:
...
break
else: //条件不成立时执行,然后退出语句块
...
*for语句和else搭配同理
和try-except搭配形成try-except-else语句块:
try:
可能出错的代码
except 错误原因:
错误是执行的代码
else:
正确时执行的代码
03
with语句
更正上个总结的错误:open以w或a打开时如果文件不存在不会自动创建文件,使用with语句时才会自动创建。使用with语句打开文件将自动再合适的时机关闭文件,因而不用关心文件的关闭。
04
Graphic User Interface(GUI图形用户界面)
easygui的安装:下载最新版easygui。win+R输入cmd进入命令窗口,cd进入解压好的文件夹,输入对应的地址安装,例如D:\study\python\python.exe setup.py install即可
easygui方法的使用:较长,可见官方文档
05
类和对象
百度百科:对象是对客观事物的抽象,类是对对象的抽象。类是一种抽象的数据类型。它们的关系是,对象是类的实例,类是对象的模板。
对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。
类:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
类的存在可以使对象达到量产。类是图纸,对象是产品,可以将类实例化为对象
OO(面向对象)的特征:
1)封装:类可以将方法和属性进行信息隐藏并组装在一起
2)继承:子类可以继承父类,即具体的类可以获得抽象笼统的类的全部方法和特性
3)多态:不同的对象对同一方法具有不同的表现
class Myclass(baseclass1,baseclass2):
#类名一般采用驼峰命名法,首字母一般大写
#一般不建议同时继承多个类
#类的说明,无继承的类可以不加(),所有类都继承于object
__name = s
#在函数外也可以定义属性,前接双下划线代表私有属性
#私有属性只能通过类的函数来显示
#实际上是伪私有属性,可以通过(实例名._类名__属性名) 来调用
def __init__(self,x,y,z):
self.a = a #对父类重构增加特有的属性
super.__init__(x,y,z) #原属性的获得,不必传入self
def showname(self):
print(s.__name)
类,类对象,实例对象:类的创建会自动创建一个类对象,如Myclass。调用Myclass.a就是类对象的属性,修改它则依托于它的实例对象也会发生改变,但是如果修改了a.a则其会覆盖类对象的影响,故修改类对象无法对其产生影响。
总结:若实例对象没有覆盖类,则实例对象属性值随类对象属性值改变而改变;若实例对象的属性值进行过修改,则类对象属性值的修改无法影响实例对象属性值。
如果实例中的属性名和方法名相同,则属性覆盖方法
要避免这种问题,需要将两者命名区别开,属性名多采用名词而方法名多采用动词。并且多使用组合与继承。
用某个类创建实例后再将类删除,实例的属性和方法仍保留,因为类的代码仍然存在于内存中。
与类和对象相关的内置函数:
1) issubclass(class,infoclass),如果class是infoclass的子类则返回T否则返回F,infoclass可以是类组成的元组,只要class是其中某一类的子类即T
2) isinstance(object,infoclass),如果object是infoclass的实例返回T,infoclass可以是类组成的元组,只要object是其中某一类的实例即T
3)hasattr(object,name):如果实例中含有属性名name则返回T,其中name必须是字符串格式
4)getattr(object,name,default):如果实例中含有属性名name则返回对应属性的值,如果没有则输出default字符串
5)delattr(object,name):删除name属性和它的值
x = property(获得属性的方法,设置属性的方法,删除属性的方法)
x就变成目标属性的别名,通过x就可以删除修改调用属性。就是在当你需要修改类内部的函数时用户需要所需要的属性名可以不变
领取专属 10元无门槛券
私享最新 技术干货