Python入门自学进阶——7--类与对象-异常反射单例模式
Posted kaoa000
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python入门自学进阶——7--类与对象-异常反射单例模式相关的知识,希望对你有一定的参考价值。
一、异常处理
语法:使用try...except语法
try:
#代码块,相关逻辑,例如
inp = input(‘请输入序号:’)
i = int(inp)
except Exception as e:
#上述代码块如果出错,自动执行当前块的内容,即在try块中出现错误
#e是Exception对象,对象中封装了错误信息
i = 1
print(e)
else:
#try块没有出错,执行这里
finally:
#不管出不出错误,这里都会执行
Exception是最大的错误范围,只要出错,都能捕获,细分下,还有很多细分错误,如IndexErrors等,这些都是Exceotion的子类。
错误范围小的类放在范围大的类的上面,这样保证捕获精确度从高到低,也能更好的针对错误类型进行处理。
try模块出错
try模块没有出错
主动触发异常:上面的是内部被动异常
使用:raise Exception(‘主动错误’)
自定义异常:
继承Exception,自定义一个异常子类
断言:assert 条件,用于强制条件为真,不为真,就报错,可捕获,一般不捕获。
使用场景,可以做单元测试,可以强制必须服从。
二、反射
反射,就是用字符串的形式操作类和对象。
正常情况下,类和对象的操作如下:
这里定义时的name、age,还有show都是类的成员,访问时,obj.name、obj.age、obj.show(),是直接的访问字段或方法名。这里的成员名不是字符串。
假设有一个变量 b = ‘name’,是否可以用obj.b来访问对象的name?显然是不行的。这时就要用到反射来访问。反射的思想就是将一个字符串映射到一个成员变量名。如:
getattr()中的name就是一个字符串,可以使用变量来代替,如
类似的函数还有:
也就是通过字符串对类或对象进行定制。例如,在对数据库表做ORM时,如果一个表是临时生成的,那要生成这个对象,可以先生成一个最原始的对象,然后遍历表的字段,获得一个字段列表,字段名都是以字符串的形式保存,这时就可以使用反射,将这些字段反射到对象中,相当于对对象按表格式进行修改,这样表与对象就一一对应了。
反射也可以在模块上进行:
反射在开发框架时应该很有用。
三、单例模式
单例,就是单个实例,实例,就是对象的另一种叫法,单例模式,就是永远使用同一份实例(对象)。内存中只存在一个这种对象。
确保生成的实例一直都是一份,即如果实例存在,就返回这个实例,如果不存在,在生成这个实例,也就是生成实例的过程只执行一次,以后每次返回的都是这个实例。上面的obj、obj1和obj2都是同一个实例。
应用场景:数据库连接池、socket连接等
以上是关于Python入门自学进阶——7--类与对象-异常反射单例模式的主要内容,如果未能解决你的问题,请参考以下文章
Python入门自学进阶——6--类与对象-成员修饰符特殊成员及元类
Python入门自学进阶-Web框架——4HttpRequest和HttpResponse及模板
Python入门自学进阶-Web框架——7认识Ajax,与Django交互,基于JS