[Tutor] Modifying Source Code while Program is Running

Kent Johnson kent37 at tds.net
Fri Nov 25 14:31:28 CET 2005


Ed Singleton wrote:

> I think I can actually achieve this to some degree by doing:
> 
> Class Page(object):
>     def print(self):
>         printPage(self)
> 
> And have all my methods call functions (passing on parameters as
> necessary).  That way if I change a function, it will be changed for
> every instance of every object of that class.

Yes, that will work. You can change the definition of a class method at runtime.

> 
> And couldn't I write a function that would add functions or attributes
> to classes and objects?
> 
> def addAttribute(class, attribute, starting value):
>     # add it to the class
>     # iterate through all objects already created by the class
>         # add attribute to object

Yes, you can add attributes to classes and objects.

Did you look at this recipe?
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/160164

The MetaInstanceTracker metaclass gives an easy way for classes to keep track of their instances. The MetaAutoReloader metaclass uses MetaInstanceTracker to update class definitions when a module is reloaded.
> 
> Am I trying to use the wrong language for this?  I love Python but I
> seem to keep coming up against lots of practical issues with it and I
> really don't want to bother with practical issues.  I just want to
> define the behaviours I want without having to bother with how the
> computer is actually going to handle them.

That seems rather idealistic!
> 
> I guess it's very much a "I don't care how it works!" attitude, which
> is probably a corollary to "premature optimisation is the root of all
> evil".  Ignore all issues of memory and speed and create something
> highly abstract that allows you to define your solution.  Then work
> down from there and start worrying about speed and memory and
> practical issues later (or hopefully never).

I still think you are shooting for too high a level of abstraction. 

Kent
-- 
http://www.kentsjohnson.com



More information about the Tutor mailing list