① 异常处理数据库
在写代码的过程当中一般会遇到一些错误致使程序报错,而且大多数时候,本身也会知道哪里最有可能出问题,这种状况下,能够对代码增长异常处理。函数
1 import traceback 2 a = [1,2,3] 3 try: 4 print(a[5]) 5 except Exception as info: 6 print(info) 7 else: 8 print('没出错') 9 finally: 10 print('出不出错都执行的')
上面须要说明的第一点:异常处理时也能够把上面“Exception”替换为具体的出错类型,前提是你写代码的时候清楚哪一种报错类型,若是不符合写的类型,同样仍是会遇到程序报错运行失败;spa
第二点,except 是出错执行的部分,else 是没出错执行的部分,finally 是出不出错都会执行的部分;code
第三,info 是出错时系统给出的提示,上面的错误提示为 ’list index out of range‘,可是上面并无用到导入的模块,导入模块能够把程序报错时的全部信息获取到,具体到哪一行。以下:orm
1 import traceback 2 a = [1,2,3] 3 try: 4 print(a[5]) 5 except Exception as a: #若是a用不到,也能够不写 as a 6 print(traceback.format_exc())
实际应用时,拿连接数据库举例,好比在连数据库时加个 try,若是报错那必定是数据库链接问题;在发送请求的地方加个 try,若是报错那必定是请求发送有问题,这样就能够避免写的过程当中报错了而后像个没头苍蝇同样处处试~~~对象
② 面向对象blog
几个概念:继承
类:至关于一个模型,里面集合了一些方法和属性,类的组成:类名、属性和方法索引
对象:根据模型具象化的东西接口
实例化:根据模型造对象的过程
【封装】
封装的主要特色以下所示。
【多态】
多态的主要特征以下所示。
它为咱们展现了 Python 内置类型的多态:
1 a = 'John'
2 b = (1,2,3)
3 c = [3,4,5,6] 4 print(a[1],b[0],c[2])
【继承】
如下几点有助于更好地理解继承过程。
如下简单的定义一个类和一些说明。
1 class Car(object): 2 def __init__(self): 3 print('--init--') 4 def __del__(self): 5 print('--del--') 6 def move(self): 7 print('--move--') 8 def stop(self): 9 print('--stop--') 10 def __new__(self): 11 print('--new--') 12 return object.__new__(cls) #cls 就是class
1. 关于继承,公有属性和方法能够继承,私有方法和属性不能被继承,可是能够经过公有方法来修改。继承以后,能够经过打印'类名.mro()'或‘类名.__mro__’来查看继承的顺序。
2. __init__ 方法是一个初始化的方法,对象建立成功后自动执行。
3. __new__ 方法是建立对象的方法,实例化的过程就至关因而在执行基类的这个功能,以上的代码中,若是不加 return object.__new__(cls), 那么对象不会被建立,init 也不会执行,只会执行 new 中的方法,这是由于,第一,验证了建立对象就是去执行new这个方法;第二,子类重写了父类的方法,致使只执行子类的new方法,而子类重写的方法中不包含建立对象,因此不会被建立。所以,加上 return 那一句,就能够正常实例话,而且 init 也能够被执行。
4. 调用被重写的方法:类名.方法(self)
5. 静态方法:@staticmethod,由于在程序开发过程当中,一般只会用类或者只用函数,因此有的函数定义了但与类没什么实际的关联,这种就能够放在类里面定义为一个静态方法。
6. 类方法:@classmethod,能够经过类型.类方法直接调用。
7. __del__ 方法在对象被释放/被删除时调用。
8. sys.getrefcount(对象) 能够查看对象的引用个数,比实际多1
9. 面向对象的三个基本要素:封装、继承和多态
就先酱紫吧~😉