052-071
类方法:就是针对类对象定义的方法,在类方法内部可以直接访问类属性 或者调用其他的类方法,语法如下:
@classmethod
def 类方法名(cls):
通过类名. 调用类方法,不需要传递cls参数,这个参数和实例方法的第一个参数self类似,在类方法内部,可以通过cls. 访问类的属性,也可以通过cls. 调用其他的类方法。
静态方法:如果在类中封装的方法,该方法既不需要访问实例属性或者调用实例方法,也不需要访问类属性或者调用类方法,就可以把这个方法封装成一个静态方法。语法如下:
@staticmethod
def 静态方法名():
通过类名. 静态方法名 可以直接调用静态方法
__new__方法(python中的内置方法)作用
1)在内存中为对象分配空间
2)返回对象的引用
python解释器获得对象的引用后,将引用作为第一个参数,传递给__init__方法。
重写new方法一定要 return super(). new(cls),否则Python的解释器得不到分配了空间的 对象引用,就不会调用对象的初始化方法。注意:__new__是一个静态方法,在调用时需要主动传递cls参数。
单例设计模式——让类创建的对象,在系统中只有唯一的一个实例
1)定义一个 类属性,初始值是None,用于记录 单例对象的引用
2)重写__new__方法
3)如果类属性 is None,调用父类方法分配空间,并在类属性中记录结果
4)返回类属性中记录的对象引用
捕获异常常用语法
try:
尝试执行的代码
except:
出现错误的处理
捕获异常后,程序不会停止运行,异常后面的代码会继续执行。
程序在执行时,可能会遇到不同类型的异常,并且需要针对不同类型的异常,做出不同的响应,这个时候需要捕获错误类型了。语法如下:
try:
尝试执行的代码
except 错误类型1:
针对错误类型1做出的处理
except 错误类型2:
针对错误类型2做出的处理
注意:当python解释器 抛出异常时,最后一行错误信息的第一个单词,就是错误类型。
捕获未知错误语法如下:
except Exception as result:
print(”未知错误 %s“ % result)
异常捕获完整语法如下:
try:
尝试执行的代码
except 错误类型1:
针对错误类型1做出的处理
except 错误类型2:
针对错误类型2做出的处理
except Exception as result:
print(”未知错误 %s“ % result)
else:
没有异常才会执行的代码
finally:
无论是否有异常,都会执行的代码
异常的传递:当函数/方法出现异常,会将异常传递给函数/方法的调用一方,直到异常传递到主程序,仍然没有异常处理,程序才会停止执行。
利用异常的传递性,可以在主程序中增加异常捕获,这样就不需要在其他代码中,增加大量的异常捕获,这样能够保证代码的整洁。
抛出异常的步骤:
1)创建一个Exception的对象
2)使用raise关键字 抛出 异常对象