python学习历程_异常+魔术方法(day6)

1、引发异常:raise

自定义异常类:只要确保的类是直接或间接继承于Exception这个基类

2、捕捉异常:try…..except(Exception)语句

 try......except(Exception).....except(Exception)
    try.....except(Exception,Exception,Exception......)

3、捕捉对象:

 try....except(Exceptionas  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

今天暂时到这,明天接着看^^)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值