面向对象初级篇
面向对象高级篇
面向对象其他相关内容
一、isinstance(obj, cls)
检查是否obj是否是类 cls 的对象
下面是伪代码形式的解释
1
2
3
4
5
6
|
class Foo( object ): pass obj = Foo() isinstance (obj, Foo) |
下面是利用历史知识的解释
1 ###命令行解释 2 >>> a = [1,2,3] 3 >>> type(a) ##传统的判断方法 4 <class 'list'> 5 >>> if type(a) is list:print(a) ###传统的程序实现的判断方法 6 ... 7 [1, 2, 3] 8 >>> isinstance(a,list) ###实例a 是类list的一个对象 9 True 10 >>> isinstance(a,dict) ###实例a 不是类dict的的一个对象 11 False
二、issubclass(sub, super)
检查sub类是否是 super 类的派生类
1 class Foo(object): 2 pass 3 4 class Bar(Foo): 5 pass 6 7 issubclass(Bar, Foo)
三 异常处理
基本实现代码
1 #!/usr/bin/env python 2 while True: 3 num1 = input('num1:') 4 num2 = input('num2:') 5 try: 6 num1 = int(num1) 7 num2 = int(num2) 8 result = num1 + num2 9 #except Exception,e: ##2.7 的写法 10 except ValueError as e: 11 print("value err",e) 12 13 except Exception as e: 14 print('出现异常,信息如下:') 15 print(e) 16 17 ''' 18 异常类型可以类似于 if elif else 这样的写法。获取多个已知类型,便于自己排错,exception 实现兜底。但是有一些语法等错误,还是无法抓取,这是由于在程序加载过程中就出现了,还没有到程序处理阶段 19 '''
2 异常种类
常用异常
AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常;基本上是无法打开文件 ImportError 无法引入模块或包;基本上是路径问题或名称错误 IndentationError 语法错误(的子类) ;代码没有正确对齐 IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5] KeyError 试图访问字典里不存在的键 KeyboardInterrupt Ctrl+C被按下 NameError 使用一个还未被赋予对象的变量 SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了) TypeError 传入对象类型与要求的不符合 UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量, 导致你以为正在访问它 ValueError 传入一个调用者不期望的值,即使值的类型是正确的