python 单例模式内存泄露_Python 学习笔记 - 面向对象(单例模式和异常处理)

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

一个简单的方式是通过一个静态字段进行判断。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 "", line 4, in 

AssertionError

你可能感兴趣的:(python,单例模式内存泄露)