转载

python异常以及面向对象编程

一、面向对象

需要注意的是,在Python中,变量名类似 __xxx__ 的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量,所以,不能用 __name____score__ 这样的变量名。

有些时候,你会看到以一个下划线开头的实例变量名,比如 _name ,这样的实例变量外部是可以访问的,但是,按照约定俗成的规定,当你看到这样的变量时,意思就是,“虽然我可以被访问,但是,请把我视为私有变量,不要随意访问”。

双下划线开头的实例变量是不是一定不能从外部访问呢?其实也不是。不能直接访问 __name 是因为Python解释器对外把 __name 变量改成了 _Student__name ,所以,仍然可以通过 _Student__name 来访问 __name 变量:

二、python异常处理

1、try-except异常处理

代码块如下:

try:     try_code except NameError,e:     except_code finally:     always run code.

2、with as异常处理

with open('q.txt') as f:     for line in f.readlines():         print line

3、python常见异常

(均继承自Exception基类)

3-1、NameError:变量a未定义

3-2、SyntaxError:语法错误,if True(没加:)

3-3、IOError:f = open('1.txt'):文件不存在

3-4、ZeroDivisionError:10/0

3-5、ValueError:a=int('dd')

4、raise语句和assert语句

4-1raise用于主动抛出异常

语法:

raise exception,args

exception:异常类 args:描述异常的元组

例如 raise NameError, "Not defined"

输出 NameError: Not definied

4-2assert语句

断言语句:用于检测表达式是否为真,如果是假,引发AssertionError错误。

语法: assert expression,args

expression:表达式

args:判断条件的描述信息

举例: assert 0,'test assert'或者assert 0==9,'test assert'

输出AssertionError: test assert

5、标准异常和自定义异常

自定义异常必须继承自Exception类,而且只能是主动触发(raise)

举例说明

自定义异常:

class FileError(IOerror):

pass

产生自定义异常:

raise FlieError, 'file error'

try捕获异常的使用:

try:     raise FileError,'file error' except FileError,e:     print e
正文到此结束
Loading...