Python隨心記--反射、動態導入模塊
阿新 • • 發佈:2019-01-01
self. 反射 UNC 文件 map tpc span 名稱 cli
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隨心記--反射、動態導入模塊