美文网首页Python基础系列pythonpython进阶课
Python 反射attr以及模块动态导入

Python 反射attr以及模块动态导入

作者: 我爱学python | 来源:发表于2019-07-22 20:32 被阅读4次

    一、实现自省的四个函数

    1、hasattr判断一个对象中有没有一个name字符串对应的方法或属性

    如果没有则返回False

    2、getaddr  获取实例的属性

    如果需要获取的实例的属性没有的话就报错了

    可以加一个默认的参数,如果getaddr获取的属性不存在的话就返回你定义的那个

    3、setaddr给对象(实例)设置属性

    用setaddr给对象(实例)设置函数属性

    4、delattr    删除实例的属性

    上面这四种attr都是在自己这里找,使用它们来实现自省的功能,就是自我反省,自我检查的意思,从自己这里找

    5、反射的具体应用

    miaoye负责一个其他的类,但是跟gouguoqi是一个团队的,虽然ftp_client没有写好,但是很不影响miaoye编写代码

    过了半年,gouguoqi度假回来了,写好了ftp_clent这个类,miaoye那里的代码都不用动,直接就可以用了

    gouguoqi的ftp_client

    miaoye的

    这就叫做可插拔式设计

    二、动态导入模块

    1、__import__导入的只导入到顶级,就是导入了m1,

    2、补充:

    把t模块中的所有的方法都导入过来

    t模块中的内容

    那我们把t模块中的test2前面加个下划线,变为私有属性之后import *就不能导入了

    但是我们可以换种导入的方式,就可以正常导入了

    3、利用模块的方式 import importlib

    这种方式直接就可以导入到t了。而不是下面这样

    相关文章

      网友评论

        本文标题:Python 反射attr以及模块动态导入

        本文链接:https://www.haomeiwen.com/subject/whjglctx.html