Oops, sending to the list with this PS: Google 'python reload' for discussion and workarounds.
Daniel Knierim wrote: > Hello Pythonistas, > > Running the script 'instantiate_and_reload.py' gives me the error > TypeError: unbound method __init__() must be called with ParentClass > instance as first argument (got ChildClass instance instead) I haven't looked at your script closely enough to know exactly where the error is but there are some real problems with reloading modules when you have references to objects in the module object. The module is reloaded but the references are not automatically rebound to the new module. In particular, names that are imported from the module will still refer to the original module, and instances of classes from the module will refer (via their __class__ attribute) to the original class. The docs for reload() talk about this a little: http://docs.python.org/lib/built-in-funcs.html#l2h-61 For example (using the cmd module just because it contains a class): In [1]: from cmd import Cmd Cmd is bound to the class object in the cmd module In [2]: c=Cmd() c is an instance of the original class In [3]: import cmd In [4]: cmd.Cmd is Cmd Out[4]: True In [5]: isinstance(c, cmd.Cmd) Out[5]: True cmd.Cmd, Cmd and c.__class__ all refer to the same class In [6]: reload(cmd) Out[6]: <module 'cmd' from '/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/cmd.pyc'> In [7]: isinstance(c, cmd.Cmd) Out[7]: False We now have a new class object bound to cmd.Cmd, it is not the same object! In [8]: from cmd import Cmd In [9]: c.__class__ Out[9]: <class cmd.Cmd at 0x10ac870> In [10]: c.__class__ is Cmd Out[10]: False c.__class__ is still the old Cmd class In [11]: Cmd is cmd.Cmd Out[11]: True In [12]: reload(cmd) Out[12]: <module 'cmd' from '/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/cmd.pyc'> In [13]: Cmd is cmd.Cmd Out[13]: False Cmd itself has the same trouble. Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor