内置函数的补充/super/异常值处理

内置函数的补充

  • 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
    
posted @ 2020-11-28 23:50  小杨的冥想课  阅读(70)  评论(0编辑  收藏  举报