首页 > 代码库 > Python 学习笔记 - 面向对象(单例模式和异常处理)

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

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


实现他的方式有很多,比如http://foofish.net/blog/93/python_singleton


一个简单的方式是通过一个静态字段进行判断。

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 "<input>", line 4, in <module>
AssertionError


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

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