首页 > 编程语言 > 详细

Python随心记--反射、动态导入模块

时间:2019-01-01 00:01:21      阅读:208      评论:0      收藏:0      [点我收藏+]
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随心记--反射、动态导入模块

原文:https://www.cnblogs.com/Essaycode/p/10203659.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!