myparentclass.__subclasses__() not working for me
samwyse
samwyse at gmail.com
Mon Sep 14 09:30:07 EDT 2009
### I've tried this under both Python 2.5.1 and 3.1.1, and it isn't
working with either one. Here is my program:
class Plugin(object):
"""This is the base object for a plug-in."""
pass
def load_plugins(plugin_subdir='plugins'):
import sys, pkgutil, imp, os.path
try:
# Use this path if we're running as a module.
homedir = __path__[0]
except NameError:
# Use this path if we're running stand-alone.
homedir = sys.path[0]
plugin_path = [ os.path.join(homedir, plugin_subdir) ]
modules = {}
for loader, name, is_pkg in pkgutil.iter_modules(plugin_path):
file, pathname, desc = imp.find_module(name, plugin_path)
modules[name] = imp.load_module(name, file, pathname, desc)
for pair in modules.items():
print('name = %r\nmodule = %r\n' % pair)
if __name__ == '__main__':
print('subclasses = %r\n' %(Plugin.__subclasses__()))
load_plugins()
print('subclasses = %r\n' %(Plugin.__subclasses__()))
### And here is my plugin, in plugins/myplugin.py:
from plugin import Plugin
class MyPlugin(Plugin):
pass
### When I run the main program, I get this:
subclasses = []
name = 'myplugin'
module = <module 'myplugin' from 'C:\Documents and Settings\sam_denton
\Desktop\scripting\plugins\myplugin.py'>
subclasses = []
### Obviously, myplugin is being found found and loaded, but my base
class doesn't know about it. Any ideas?
More information about the Python-list
mailing list