我用了乙個python動態載入模組的方法,做了乙個callback。也可以改寫為載入多個外掛程式。不多說 上**
# coding:utf-8
import os, os.path, sys
'''callbacktest.py'''
class
_callbacklist =
def__init__
(self):
# scriptdir = os.path.join ( os.path.dirname(os.path.abspath(__file__)), "plugin" )
callbackdir = "***x/callback"
#絕對路徑
print callbackdir
# 將模組路徑加到當前模組掃瞄的路徑裡
sys.path.insert(0, callbackdir)
for plug in os.listdir(callbackdir):
# print "plug: ",plug[-3:]
if (plug[-3:].lower() == ".py"):
print
"__import__ ", os.path.basename(plug)[:-3]
m = __import__(os.path.basename(plug)[:-3]) #這裡是關鍵步驟,動態import類
defupdatedata
(self):
self.runstart()
print
"更新資料"
self.runend()
defrunstart
(self):
for p in self._callbacklist:
p.start()
defrunend
(self):
for p in self._callbacklist:
p.end()
if (__name__ == "__main__"):
下面是callback目錄中的兩個例子
第乙個例子,在方法執行前後列印日誌
# coding:utf-8
'''log.py'''
class
callbackmodule
(object):
defstart
(self):
print
"log函式開始前呼叫該方法: ", "記錄開始更新資料"
defend
(self):
print
"log函式結束後呼叫該方法: ", "記錄更新完畢"
第二個例子
# coding:utf-8
'''progress.py'''
import datetime
class
callbackmodule
(object):
today = datetime.datetime.now()
defstart
(self):
print
"progress函式開始前呼叫該方法: ", datetime.datetime.strftime(self.today, '%y-%m-%d %h:%m:%s')
defend(self):
print
"progress函式結束後呼叫該方法: ", datetime.datetime.strftime(self.today, '%y-%m-%d %h:%m:%s')
python如何實現繼承 python如何實現繼承
物件導向程式設計的乙個主要優點是重用。繼承是實現同樣的機制之一。在繼承中,類 通常稱為超類 由另乙個類 通常稱為子類 繼承。子類為超類新增了一些屬性。下面是乙個示例python程式,用於說明如何在python中實現繼承。a python program to demonstrate inherita...
python如何實現棧 Python實現棧的方法
usr bin env python 定義乙個列表來模擬棧 stack def pu 出棧,用到了pop 函式 def popit if len stack 0 print cannot pop from an empty stack else print removed stack.pop 編歷棧...
Python如何實現人臉識別
usr bin python3 coding utf 8 import cv2 import sys class opencvs def main self int 0 cap cv2.videocapture 0 告訴opencv使用人臉識別分類器 classfier cv2.cascadecla...