#反射的方法:hasattr(),getattr(),setattr(),delattrr() class BlackMedium: city=‘佛山‘ def __init__(self,name,addr): self.name=name self.addr=addr def rent_house(self): print(‘[%s]正在出租%s的房子‘%(self.name,self.addr)) b1=BlackMedium(‘小黑‘,‘千灯湖‘) print(hasattr(b1,‘addr‘))#属性名要写字符串格式 func=getattr(b1,‘rent_house‘)#找不到属性则报错,但可加参数,找不到属性返回参数内容如下 print(getattr(b1,‘age‘,‘找不到该属性‘)) func() setattr(b1,‘age‘,18) setattr(b1,‘func‘,lambda x:x+1) setattr(b1,‘func1‘,lambda self:self.name+‘sb‘) print(b1.func(10)) print(b1.func1(b1)) print(b1.__dict__) delattr(b1,‘age‘) print(b1.__dict__) #反射可以实现分开开发,进度互不影响 class FtpClient: ‘ftp客户端,但还没有实现具体功能‘ def __init__(self,addr): print(‘正在链接服务器【%s】‘%addr) self.addr=addr f1=FtpClient(‘10.26.76.175‘) if hasattr(f1,‘get‘): func_get=getattr(f1,‘get‘) func_get() else: print(‘----->不存在此方法‘) print(‘处理其他的逻辑‘) #动态导入模块 module_t=__import__(‘doc.t‘) print(module_t) module_t.t.test() from doc.t import * test() import importlib m=importlib.import_module(‘doc.t‘) print(m) m.test()
原文:https://www.cnblogs.com/josie930813/p/10452801.html