我正在为python中的内部基于xml的元数据格式编写解析器。我需要提供不同的类来处理不同的标签。将需要一个相当大的处理程序集合,所以我将它想象成一个简单的插件系统。我想要做的只是加载包中的每个类,并将其注册到我的解析器。 我现在的尝试是这样的:
(处理程序是包含处理器的包装,每个处理器有一个静态成员变量,这是一个字符串数组)简单的python插件系统
class MetadataParser:
def __init__(self):
#...
self.handlers={}
self.currentHandler=None
for handler in dir(Handlers): # Make a list of all symbols exported by Handlers
if handler[-7:] == 'Handler': # and for each of those ending in "Handler"
handlerMod=my_import('MetadataLoader.Handlers.' + handler)
self.registerHandler(handlerMod, handlerMod.tags) # register them for their tags
# ...
def registerHandler(self, handler, tags):
""" Register a handler class for each xml tag in a given list of tags """
if not isSequenceType(tags):
tags=(tags,) # Sanity check, make sure the tag-list is indeed a list
for tag in tags:
self.handlers[tag]=handler
但是,这是行不通的。我收到错误AttributeError: 'module' object has no attribute 'tags'
我在做什么错?
修复您的缩进。 – SilentGhost 2009-06-17 11:59:45
你并没有提供太多的信息。错误信息可能会说*错误发生在哪一行,这显然有助于查明问题。此外,你的代码有语法错误(在类名称缩进后缺少冒号),所以你在这里发布的内容根本不会运行。此外,错误可能发生在您未发布的代码的某些部分中...... – sth 2009-06-17 12:13:00