python如何實現callback

2021-07-09 08:49:32 字數 1833 閱讀 6427

我用了乙個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...