[EMAIL PROTECTED] schrieb: > Does anyone have some design ideas ( or can point me at the right > design pattern, because I can't find it. ) for having a plugin being > able to access a parent's state? > > For example, let's say I have a class that receives some commands. > When it gets a command, it checks which of the registered plugins > deals with that command and passes the details of the command off to > that plugin. So I'd end up with something like.. > > result = plugin.do(msg_details) > > Now, I want to write a plugin called "help" that loops through all the > registered plugins and prints out their doc strings. If all my plugin > is getting is the msg details, how is it supposed to get the list of > available plugins from the calling class? > > Or, for instance, let's say my class loads a configuration file that > lists a set of admins who can enter commands. I want the plugins, if > they so choose, to be able to test if the msg came from an admin, but > again, I'm not passing the admin list into every plugin, it's just in > my calling class. I could make the plugin specify an attribute for > itself, like "admin_only" and test for that before I pass the command > but what if certain parts of the plugin are to be restricted and > others aren't, based on the details of the command sent? > > Is this as simple as just passing the instance of my class to each > plugin? It doesn't seem like the proper thing to do, because now the > plugin class has the capability of accessing the whole bot's > interface.
Yes, it is simple as that. Of course you can choose *what* you pass, if you want to restrict that - nobody forces you to pass the whole plugin-manager, if that would expose properties/methods you wouldn't want ther. But to be honest: you are thinking much to far there - after all, it's all *your* code, and inside one interpreter. A real isolation isn't available anyway. So just do what fullfills the functional requirements. diez -- http://mail.python.org/mailman/listinfo/python-list