单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时, 单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个 全局对象,这样有利于我们协调系统整体的行为。 --以上来自维基百科
实现他的方式有很多,比如http://foofish.net/blog/93/python_singleton
一个简单的方式是通过一个静态字段进行判断。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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 |
第二个要点是异常处理。
一般的基本形式是:
1 2 3 4 | try : pass except Exception as ex: pass |
比如说,注意如果要捕获不同的异常,Exception as ex需要写在最后,因为他会把任何所有的异常都放进去。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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来实现,比如
1 2 3 4 5 6 7 8 9 10 11 12 | >>> 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,如果一切正常,那么继续他后面的执行程序,否则抛出一个异常
比如
1 2 3 4 5 6 7 8 9 10 | >>> 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://www.learnbo.com/
或关注我们的官方微博微信,还有更多惊喜哦~

本文出自 “麻婆豆腐” 博客,请务必保留此出处http://beanxyz.blog.51cto.com/5570417/1858820