How to modify a program while it's running?

Aaron Brady castironpi at gmail.com
Tue Dec 16 23:09:47 EST 2008


On Dec 16, 7:54 pm, "James Mills" <prolo... at shortcircuit.net.au>
wrote:
> @Aaron
>
> Your code and suggestion is way too complicated.
> Just register your objects. When you need to
> reload your module, destroy the existing
> objects and re-creat them.
>
> This works well assuming you have a stable
> running core that maintains the connection
> and that code doesn't change much.
>
> --JamesMills

The practical and general solutions aren't very similar.  Practically,
I agree.  You could do something generic like reassign __dict__ (like
the Borg pattern), or __class__.

To be completely general, you'd need an object which passes the type
test: "TypeError: unbound method f() must be called with A instance as
first argument (
got B instance instead)".  Then you could call it in anything, Cls.meth
( obj ), regardless of if you created it before or after the class was
created.

Or you could have a class that looked up its (posessive) methods'
names on a deeper class which could be loaded later: the Delegate,
Proxy, or Adapter patterns.

Maybe Cls.meth( obj ) should be permitted to work on arbitrary objects
by a compiler switch or __future__ import.



More information about the Python-list mailing list