目录
callable
super
type()获取对应类型
isinstance判断对象是否是某个类或者子类的实例
issubclass,判断对象是不是类的子孙类
python3的异常处理
反射:
心经第三节和第五节都写了些面向对象的,这一节补充一些内置函数,,可以用在类上的
这两节提到的充当装饰器的,property,staticmethod,classmethod就不提了
判断后面能不能加括号执行,,函数,类,对象
print(callable(Class))
按照类的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)
try:
pass
#可能会抛异常的代码
except Exception as e:
#真的抛异常了,捕获异常后,处理异常的代码
pass
finally:
#不管try是否出问题,不管except是否里面捕获了,有没有处理,这块代码都会执行
#相当于最后的堡垒
pass
finally不管try是否返回,return,,finally都会执行;如果try里面return了结果,那么显示的话就会先把finally里面的显示出来,再去return。。
自定义异常,可以通过raise 自己的异常类
python里面用getattr,setattr ,hasattr,delattr,支持反射
就是用这四种方法,去替换对象.成员的写法
getattr 去对象中获取成员
v=getattr(对象,"成员名称")
v=getattr(对象,"成员名称",不存在时的默认值)
setattr 去对象中设置成员
setattr(对象,"成员名称",值)
hasattr 对象中是否包含成员
v=hasattr(对象,"成员名称")
delattr 删除对象成员
delattr(对象,"成员名称")
相当于 del 对象.成员
import_module和反射去导入模块
import random
from importlib import import_module
m=import_module("random")
后面用m.xxx就行