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

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')   #以字串模式匯入