Python心经(6)

目录

callable

super 

type()获取对应类型

isinstance判断对象是否是某个类或者子类的实例

issubclass,判断对象是不是类的子孙类 

python3的异常处理

 反射:


心经第三节和第五节都写了些面向对象的,这一节补充一些内置函数,,可以用在类上的

这两节提到的充当装饰器的,property,staticmethod,classmethod就不提了

callable

判断后面能不能加括号执行,,函数,类,对象

print(callable(Class))

Python心经(6)_第1张图片

super 

按照类的mro的继承关系,去往上找成员

mro继承关系,在第五讲又说道,,mro函数内部就是用了c3算法去找的继承关系,那一节也总结了python找继承关系的口令,可以去看看

class Base(object):
    def msg(self,num):
        print("Base.msg",num)

class Device(Base):
    def msg(self,num):
        print("Device.msg",num)
        super().msg(num+50)
        
ds=Device()
ds.msg(10)

type()获取对应类型

isinstance判断对象是否是某个类或者子类的实例

Python心经(6)_第2张图片

issubclass,判断对象是不是类的子孙类 

python3的异常处理

try:
    pass
    #可能会抛异常的代码
except Exception as e:
    #真的抛异常了,捕获异常后,处理异常的代码
    pass
finally:
    #不管try是否出问题,不管except是否里面捕获了,有没有处理,这块代码都会执行
    #相当于最后的堡垒
    pass

finally不管try是否返回,return,,finally都会执行;如果try里面return了结果,那么显示的话就会先把finally里面的显示出来,再去return。。 

Python心经(6)_第3张图片

 自定义异常,可以通过raise 自己的异常类

Python心经(6)_第4张图片

 反射:

python里面用getattr,setattr ,hasattr,delattr,支持反射

就是用这四种方法,去替换对象.成员的写法

getattr 去对象中获取成员

v=getattr(对象,"成员名称")
v=getattr(对象,"成员名称",不存在时的默认值)

setattr 去对象中设置成员

setattr(对象,"成员名称",值)

hasattr 对象中是否包含成员

v=hasattr(对象,"成员名称")

delattr 删除对象成员

delattr(对象,"成员名称")
相当于 del 对象.成员

Python心经(6)_第5张图片

import_module和反射去导入模块

import random

from importlib import import_module

m=import_module("random")
后面用m.xxx就行

 Python心经(6)_第6张图片

你可能感兴趣的:(python,开发语言)