Bonjour,
Je n'obtiens pas le même résultat en lançant mon script plugin.py en ligne de commande ou sous l'interpréteur (sources à la fin du sujet).
Pourriez-vous m'aidez à comprendre ce qui ne fonctionne pas ici ou ce que je n'ai pas compris ?
En ligne de commande, j'obtiens ceci :
a066501@ATM-AL:~/Projects/Python/plugin_py/test$ ./plugin.py
Start FirstPlugin
True
Start SecondPlugin
False
et sous l'interpréteur :
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41)
on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import plugin
>>> plugin.test()
Start FirstPlugin
True
Start SecondPlugin
True
>>>
Merci pour votre aide, Arnaud.
--
Mon premier fichier
plugin.py#!/usr/bin/python
# -*- coding:utf-8 -*-
from zope.interface import Interface, implements, implementedBy
class IPlugin(Interface):
def start():
"""Start plugin."""
def stop():
"""Stop plugin."""
class Plugin(object):
implements(IPlugin)
def __init__(self):
pass
def start(self):
print "Start %s" % self.__class__.__name__
class FirstPlugin(Plugin):
pass
def test():
o = FirstPlugin()
o.start()
print IPlugin.implementedBy(FirstPlugin)
sp = __import__('second_plugin').SecondPlugin
o = sp()
o.start()
print IPlugin.implementedBy(sp)
if __name__ == "__main__":
test()
Mon second fichier
second_plugin.py#!/usr/bin/python
# -*- coding:utf-8 -*-
from plugin import Plugin, IPlugin
class SecondPlugin(Plugin):
pass
def test():
sp = SecondPlugin()
sp.start()
print IPlugin.implementedBy(SecondPlugin)
if __name__ == "__main__":
test()