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

一、实现自省的四个函数

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了。而不是下面这样

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值