Python 学习笔记 - 面向对象(单例模式和异常处理)

简介:

单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时, 单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个 全局对象,这样有利于我们协调系统整体的行为。 --以上来自维基百科


实现他的方式有很多,比如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则是所有操作结束之前都需要执行的操作。

wKioL1f0hlST43icAAJKLO2unKk325.png


如果想主动执行一个错误,可以通过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,如需转载请自行联系原作者

目录
相关文章
|
1月前
|
数据采集 监控 Python
Python爬虫异常处理:自动跳过无效URL
Python爬虫异常处理:自动跳过无效URL
Python爬虫异常处理:自动跳过无效URL
|
1月前
|
Python
Python 高级编程与实战:深入理解面向对象与并发编程
本文深入探讨Python的高级特性,涵盖面向对象编程(继承、多态、特殊方法、类与实例属性)、异常处理(try-except、finally)和并发编程(多线程、多进程、异步编程)。通过实战项目如聊天服务器和异步文件下载器,帮助读者掌握这些技术,编写更复杂高效的Python程序。
|
2月前
|
人工智能 数据库 开发者
[oeasy]python068_异常处理之后做些什么_try语句的完全体_最终_finally
介绍了 Python 中 `try` 语句的完全体,包括 `try`、`except`、`else` 和 `finally` 子句的使用。通过实例展示了如何捕获异常并输出详细的错误信息,如文件名和行号。特别强调了 `finally` 子句的作用,无论是否发生异常,`finally` 都会执行,常用于清理操作。最后总结了 `try` 语句的四个部分及其应用场景,并简要提及了 Python 社区的决策机制。 #try #except #else #finally
55 2
|
2月前
|
数据库连接 开发者 Python
Python中的异常处理
本文深入探讨了Python中的异常处理机制,包括异常的捕获、处理、抛出及最佳实践。通过try-except语句块,程序可以在运行时处理错误,增强健壮性和可维护性。文章还介绍了自定义异常类的创建与使用,并提供了代码示例和详细的语法说明。最后,总结了异常处理的最佳实践,如精确捕获异常、提供有用错误信息等,帮助开发者编写更可靠的代码。
112 14
|
3月前
|
存储 IDE Shell
Python单例模式中的问题
本文介绍了Python中几种常见的单例模式实现方式及其优缺点。首先,装饰器形式的单例模式通过包装类为函数来确保单例,但存在无法使用`isinstance()`和联合类型符号`|`的问题。其次,元类形式的单例模式通过自定义元类来实现单例,解决了装饰器模式的缺陷,但在继承同样使用元类的类时可能会遇到冲突。最后,模块级单例模式和类属性单例模式虽然简单直接,但不具备通用性,需要针对每种类型单独实现。总结来看,元类形式的单例模式相对较为理想,尽管可能需要打补丁,但对用户透明且不影响客户端代码。作者:三叔木卯,来源:稀土掘金。
65 12
|
4月前
|
关系型数据库 开发者 Python
Python编程中的面向对象设计原则####
在本文中,我们将探讨Python编程中的面向对象设计原则。面向对象编程(OOP)是一种通过使用“对象”和“类”的概念来组织代码的方法。我们将介绍SOLID原则,包括单一职责原则、开放/封闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则有助于提高代码的可读性、可维护性和可扩展性。 ####
|
6月前
|
Python
Python面向对象(2)
【10月更文挑战第14天】
56 6
Python面向对象(2)
|
6月前
|
设计模式 程序员 C语言
Python面向对象
【10月更文挑战第13天】
49 2
Python面向对象
|
5月前
|
UED 开发者 Python
Python中的异常处理机制
Python中的异常处理机制
78 2
|
6月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
1328 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)

热门文章

最新文章

下一篇
oss创建bucket