[EMAIL PROTECTED] a écrit :
> Hi,
>
(snip)
> - is there a better way than using multiple inheritance to plug-in
> dynamically commands in a Cmd command line?
Yes : use composition + delegation. Python makes it easy:
#foo.py
class Commands(object):
def do_this(self,args):
...
def do_that(self,args):
...
#bar.py
class Commands(object):
def do_what(self, args):
...
I've seen I can do it by explicitely import them and using multiple
inheritance:
class MyCli(cmd.Cmd):
def __init__(self, *plugins):
self.plugins = plugins
self._cache = {}
def __getattr__(self, name):
try:
return self._cache[name]
except KeyError:
for plugin in self.plugins:
attr = getattr(plugin, name, None)
if attr is not None:
self._cache[name] = attr
return attr
my_cli = MyCli(foo.Command(), bar.Command())
--
http://mail.python.org/mailman/listinfo/python-list