Python随心记--反射动态导入模块
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python随心记--反射动态导入模块相关的知识,希望对你有一定的参考价值。
hasatttr(object,name) #检测对象中是否存在name属性
getattr(object,name,delault = Null)
setattr(object,x,True)
delattr(object,x) #删除属性
class BlackMedium: feture = ‘Ugly‘ def __init__(self,name,addr): self.name = name self.addr = addr def sell_hourse(self): print(‘[%s] 正在卖房‘ %self.name) blackmedium = BlackMedium(‘青年公寓‘,‘南山‘) print(hasattr(blackmedium,‘name‘)) #存在返回True print(getattr(blackmedium,‘name‘,‘meiyouzhi‘)) #存在返回值 setattr(blackmedium,‘white‘,True) #设置属性 setattr(blackmedium,‘func‘,lambda x:x+1) #加函数 print(blackmedium.func(12))
#反射使用场景
1 实现可插拔机制
2 动态导入模块
class Ftpclient: def __init__(self,addr): self.addr = addr print(‘正在连接IP:%s服务器‘ %self.addr) def put(self): print(‘正在上传文件‘) from module import Ftpclient #模拟Ftpclient在module模块下 ftpclien = Ftpclient(‘192.168.0.1‘) if hasattr(ftpclien,‘put‘): func_get = getattr(ftpclien,‘put‘) func_get() else: print(‘方法不存在‘)
动态导入模块
module_t = __import__(‘m.t‘) #传出字符串,类似于文明的名称 module_t.t.test() #调用t下的test方法 import imaplib imaplib.import_module(‘m.t‘) #以字符串模式导入
以上是关于Python随心记--反射动态导入模块的主要内容,如果未能解决你的问题,请参考以下文章
Python 实现接口类的两种方式+邮件提醒+动态导入模块+反射(参考Django中间件源码)