1. 程式人生 > >Python隨心記--反射、動態導入模塊

Python隨心記--反射、動態導入模塊

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隨心記--反射、動態導入模塊