py plugin_pattern.md
插件模式: 可扩展更多功能,继承指定的类实现特定方法
Plugin1
class A(object):
def __init__(self):
pass
def process(self):
print('Plugin1')
a = None
def b():
pass
Plugin2
class A(object):
def __init__(self):
pass
def process(self):
print('Plugin2')
TestPlugin
# coding: utf8
import os
# 找到Plugins中所有插件名称
def getPlugin():
path = os.path.split(os.path.realpath(__file__))[0]
plugins = os.listdir(path + '/Plugins/')
fil = lambda str: (True, False)[str[-3:] == 'pyc' or str.find('__init__.py') != -1]
return filter(fil, plugins)
if __name__ == "__main__":
# 遍历所有插件
for plugin in getPlugin():
# Get Plugin File Name
pluginName = os.path.splitext(plugin)[0]
# Load Plugin
plugin = __import__("Plugins." + pluginName, fromlist=[pluginName])
myplugin = getattr(plugin, "A")
# Get Plugin Object
p = myplugin()
# Invoke Plugin Method
p.process()
仅供参考