内置函数的补充
-
1.type:查看类型
-
2.issubclass:
class Base: pass class Foo(Base): pass class bar: pass print(issubclass(bar,Base)) #判断Base是不是bar的祖先,是返回True不是返回False
-
3.isinstance
class Base(): pass class Foo(Base): pass obj = Foo() print(isinstance(obj,Base))#判断obj是否为Foo类或者基类的的一个实例 #判断obj是否为Foo类或者基类的的一个实例,在判断是否为其中的一个实例时这种更精确 class Foo: pass obj = Foo() if type(obj) == Foo: print("obj是Foo类的对象")
-
4.supper
#示例一 #按照类查找的关系一个个的往上找的 class Bar(object): def func(self): print("bar.func") class Base(Bar): pass class Foo(Base): def func(self): super().func() #根据类的继承关系,按照顺序挨个去找父类中func方法并执行(默认:找到第一个就不再找) print("foo.func") obj = Foo() obj.func() #示例二 class Base(object): def func(self): super().func() print("base.func") class Bar(object): def func(self): print("bar.func") class Foo(Base,Bar): #Foo->Base->Bar pass obj = Foo() obj.func() ''' 并不会报错,而是根据Foo的继承关系往后寻找 #输出的结果为 bar.func base.func 如果: obj = Base() obj.func() 便会报错 ''' #总结: #super().func():根据self对象所属的类的继承关系,从前到后挨个往后找
-
5.异常值的捕获
#示例一 try: int("yang") pass except Exception as e: #Except可收集所有类型的错误信息 print(e) #示例二 #终极捕获版的大boss try: #int("yang") v = [] v[1100] pass except ValueError as e: #Except可收集所有类型的错误信息 pass except IndexError as e: #Except可收集所有类型的错误信息 pass except Exception as e: #Except可收集所有类型的错误信息 print(e) #示例三 try: int("yang") except Exception as e: print(e) #e是Exception类的对象中的一个错误信息 finally: print("最后") #无论有没有错误最后都执行的东西 #示例四 #finally的特殊情况 def func(): try: #try只要有终止的一天,肯定会执行到fially的 v = 1 return 123 #通常来讲函数遇到return便终止,但此处一定会执行到finally,如果不在try里面当然没什么问题,正常终止 int("yang") except Exception as e: print(e) #e是Exception类的对象中的一个错误信息 finally: print("最后") #无论有没有错误最后都执行的东西 func()
-
6.主动触发异常
#基础结构 try: int(123) raise Exception("HASVDHAI") #代码中主动抛出错误 except Exception as e: print(e) #升级版 def func() result = True try: with open("x.log",mode="r",encoding="utf-8") data = f.read() if "yang" not in data: raise Exception() #如果括号中没东西便返回e,要理解e的含义 except Exception as e: result = False