1、引发异常:raise
自定义异常类:只要确保的类是直接或间接继承于Exception这个基类
2、捕捉异常:try…..except(Exception)语句
try......except(Exception).....except(Exception)
try.....except(Exception,Exception,Exception......)
3、捕捉对象:
try....except(Exception)as e:
print (e)
4、esle语句:如果主try块中没有异常引发,else子句就会被执行
5、finally:如果要确保某些代码不管是否有异常引发都要执行,那么这些代码就可以放在finally中
二、魔术方法:
1、_ init _()构造方法:创建对象时,则会立即调用 构造方法。用来初始化新创建对象的状态
2、super函数 用来调用相应的父类方法
class A_1(object):
def __init__(self):
self.name = 'lili'
self.age = 13
创建类B_1,继承A_1,直接创建_ init _方法,init方法被重写,B_1中不具有父类A_1中init方法中的属性
>>> class B_1(A_1):
def __init__(self):
self.grade = 87
>>> b = B_1()
>>> b.name()
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
b.name()
AttributeError: 'B_1' object has no attribute 'name'
采用super函数 super(C_1,self).__init__()
用于调用父类的init方法, 则继承了父类A_1中init方法的属性
>>> class C_1(A_1):
def __init__(self):
super(C_1,self).__init__()
self.grade=98
>>> c = C_1()
>>> c.name
'lili'
3、基本序列/映射规则的方法
a.魔术方法
_ len _() 返回集合中所含项目数量
>>> l=[1,2,3,4,5]
>>> d = {'1':'lili','2':'andy','3':'lucy'}
>>> l.__len__()
5
>>> d.__len__()
3
_ getitem _(self,key) 返回与所给键对应的值
>>> d.__getitem__('1')
'lili'
>>> l.__getitem__(1)
2
_ setitem _(self,key,value) 按一定方式存储和key相关的value值
d.__setitem__('6','jack')
>>> d
{'2': 'andy', '1': 'lili', '3': 'lucy', '6': 'jack'}
#可为字典中添加键-值对项
>>> l.__setitem__(4,7)
>>> l
[1, 2, 3, 4, 7]
#对于列表可修改其中某一项
>>> d.__setitem__('1','jack')
>>> d
{'2': 'andy', '1': 'jack', '3': 'lucy', '6': 'jack'}
#对于字典也可更改其中某个键-值对
_ delitem _(self,key) 删除某个键的值
b、子类化list : 希望实现一个和内建列表(list、dict)行为相似的序列
如下CounterList在很多方面与列表作用一样,但多了一个counter属性,每次元素被访问时,进行自增
class CounterList(list):
def __init__(self,*args):
super(CounterList,self).__init__(*args)
#super用于调用父类init方法
self.counter = 0 #新增属性
def __getitem__(self,index):
self.counter +=1
return super(CounterList,self).__getitem__(index)
#super用于调用父类getitem方法
>>> c2 = CounterList(range(10))
>>> c2
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> c2[2]+c2[1]
3
>>> c2.counter
2
4、property函数(@property)
将一个函数变为类属型,相当于setXX、getxx
今天暂时到这,明天接着看^^)