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