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 _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor