Python 学习笔记 - 面向对象(单例模式和异常处理)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 学习笔记 - 面向对象(单例模式和异常处理)相关的知识,希望对你有一定的参考价值。
单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时, 单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个 全局对象,这样有利于我们协调系统整体的行为。 --以上来自维基百科
实现他的方式有很多,比如http://foofish.net/blog/93/python_singleton
一个简单的方式是通过一个静态字段进行判断。
class Foo: instance = None def __init__(self,name): self.name = name @classmethod def get_instance(cls,name): # cls类名 if cls.instance: return cls.instance else: obj = cls(name) cls.instance = obj return obj obj1 = Foo.get_instance(‘alex‘) print(obj1.name) obj2 = Foo.get_instance(‘bee‘) print(obj2.name) ------------ alex alex
第二个要点是异常处理。
一般的基本形式是:
try: pass except Exception as ex: pass
比如说,注意如果要捕获不同的异常,Exception as ex需要写在最后,因为他会把任何所有的异常都放进去。
while True: num1 = input(‘num1:‘) num2 = input(‘num2:‘) try: li = [] li[100] num1 = int(num1) num2 = int(num2) result = num1 + num2 except ValueError as ex: print(ex) # str except IndexError as ex: print(ex) # str except Exception as ex: print(ex)
还有一种表达形式是 try..except..else..finally
else表示如果没有错误执行的操作,finally则是所有操作结束之前都需要执行的操作。
如果想主动执行一个错误,可以通过raise来实现,比如
>>> try: raise ValueError(‘主动错误一下‘) # self.message = ‘主动错误一下‘ print(1234) except ValueError as ex: print(ex) # str except Exception as ex: print(ex) # __str__, return self.message else: pass finally: pass 主动错误一下
最后看看断言 assert,如果一切正常,那么继续他后面的执行程序,否则抛出一个异常
比如
>>> a=100 assert a>10 print("Ok") assert a<40,print("oh wrong") print("wrong") Ok oh wrong Traceback (most recent call last): File "<input>", line 4, in <module> AssertionError
本文出自 “麻婆豆腐” 博客,请务必保留此出处http://beanxyz.blog.51cto.com/5570417/1858820
以上是关于Python 学习笔记 - 面向对象(单例模式和异常处理)的主要内容,如果未能解决你的问题,请参考以下文章