Я пишу систему плагинов для моей программы, и я не могу получить за одну вещь:Проблемы с использованием супер (питон 2.5.2)
class ThingLoader(object):
'''
Loader class
'''
def loadPlugins(self):
'''
Get all the plugins from plugins folder
'''
from diones.thingpad.plugin.IntrospectionHelper import loadClasses
classList=loadClasses('./plugins', IPlugin)#Gets a list of
#plugin classes
self.plugins={}#Dictionary that should be filled with
#touples of objects and theirs states, activated, deactivated.
classList[0](self)#Runs nicelly
foo = classList[1]
print foo#prints <class 'TestPlugin.TestPlugin'>
foo(self)#Raise an exception
Тест плагин выглядит следующим образом:
import diones.thingpad.plugin.IPlugin as plugin
class TestPlugin(plugin.IPlugin):
'''
classdocs
'''
def __init__(self, loader):
self.name='Test Plugin'
super(TestPlugin, self).__init__(loader)
Теперь IPlugin выглядит следующим образом:
class IPlugin(object):
'''
classdocs
'''
name=''
def __init__(self, loader):
self.loader=loader
def activate(self):
pass
всех классов IPlugin работа flawlessy ими сами, но при вызове ThingLoader прог барабан получает исключение:
File "./plugins\TestPlugin.py", line 13, in __init__
super(TestPlugin, self).__init__(loader) NameError:
global name 'super' is not defined
Я посмотрел вокруг, и я просто не знаю, что происходит.
После прочтения принятого ответа у меня возникает соблазн уменьшить вопрос о том, что он неполный и вводящий в заблуждение. –