Python 面向对象6 - 单例模式、异常
2016-08-05 10:30
459 查看
1.单例模式:
对于一个JDBC的连接池而言,如果来了一个用户,我们不需要重新创建一个连接池,只需要使用连接池里面的一个线程而已,因此在这种情况下,不需要重新创建一个新的对象,而只需要使用这个原有的对象。这种叫做单例模式。
返回结果:
2.异常处理
try,except的完整代码块,如果try执行报错,执行exception,然后跳转到finally;如果try执行没有报错,跳转到else,最后执行finally
主动抛出异常
自定义异常:
对于一个JDBC的连接池而言,如果来了一个用户,我们不需要重新创建一个连接池,只需要使用连接池里面的一个线程而已,因此在这种情况下,不需要重新创建一个新的对象,而只需要使用这个原有的对象。这种叫做单例模式。
class Foo: INSTANCE = None #静态字段,用类来访问 def __init__(self,name): self.name = name @classmethod def get_instance(cls): if cls.INSTANCE: return cls.INSTANCE else: obj = cls('Alex') cls.INSTANCE = obj return obj obj1 = Foo.get_instance() print (obj1) obj2 = Foo.get_instance() print (obj2)
返回结果:
<__main__.Foo object at 0x0147F8F0> <__main__.Foo object at 0x0147F8F0> #两个相同的内存地址
2.异常处理
try,except的完整代码块,如果try执行报错,执行exception,然后跳转到finally;如果try执行没有报错,跳转到else,最后执行finally
# try: # pass # except IOError as ex: # print (ex) # except ValueError as ex: # print (ex) # except IndexError as ex: # print (ex) # else: # pass # finally: # pass try: i = 123.0 int(i) except IOError as ex: print (ex) except ValueError as ex: print (ex) except IndexError as ex: print (ex) else: print (1234) finally: print (4567)
主动抛出异常
try: raise Exception("我的主动异常") i = 123.0 int(i) except IOError as ex: print (ex) except ValueError as ex: print (ex) except IndexError as ex: print (ex) except Exception as ex: print (ex) else: print (1234) finally: print (4567)
自定义异常:
class MyException(Exception): def __init__(self,msg): self.message = msg def __str__(self): return self.message + "ERROR" myex = MyException("我的异常") try: raise MyException("我的异常") except Exception as e: print (e)
相关文章推荐
- Python_day8_面向对象(多态、成员修饰符、类中特殊方法、对象边缘知识)、异常处理之篇
- Python 学习笔记(二):时间,函数,异常,面向对象
- python面向对象其他相关-异常处理-反射
- Python基础系列----函数,面向对象,异常
- Python面向对象7:异常处理
- Python面向对象3:静态/动态字段、静态/动态方法、单例模式
- Python3 与 C# 面向对象之~异常相关
- 文成小盆友python-num8 面向对象中的成员,成员修饰符,特殊成员,异常处理,设计模式之单例模式
- python基础8:面向对象3、异常、模块
- Python基础操作 文件的读写 异常模块 类面向对象 时间日历
- Python天天练2--面向对象+异常
- Python3 与 C# 面向对象之~异常相关
- python——面向对象篇之异常和反射
- Python-老男孩-02_装饰器_面向对象_封装_继承_异常_接口_数据库
- python | 面向对象 | 异常
- 模式分析和基于Python的DSLs的必要性
- C#面向对象的设计模式 抽象工厂模式
- 组合还是继承,这是一个问题?——由模式谈面向对象的原则之多用组合、少用继承
- 不错的一篇面向对象的PHP开发模式(简写版)
- 从面向对象到模式再到真正的面向对象