单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时, 单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个 全局对象,这样有利于我们协调系统整体的行为。 --以上来自维基百科
实现他的方式有很多,比如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)
------------
alexalex |
第二个要点是异常处理。
一般的基本形式是:
|
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")
Okoh wrongTraceback (most recent call last): File "<input>", line 4, in <module>
AssertionError |
本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/1858820,如需转载请自行联系原作者