Add a method to an existing class

Pete Shinners pete at visionart.com
Wed May 16 14:49:00 EDT 2001


"Bruce Edge" <bedge at troikanetworks.com> wrote 
> I have some idl generated classes. I'd like to add a __repr__ method to
> control default output representation.
> So, my question is, how does one add a method to an existing class when
> you don't have control of the class definition.

hello bruce, this likely isn't the cleanest way to do this, but
it's the best i've been able to come up with. you can define a
new function (that takes self for the first argument) and assign
that method to the class of your instance.

>>> class myclass:
...     val = 5
...
>>> inst = myclass()
>>> print inst
<__main__.myclass instance at 007F442C>
>>> def showval(self): return str(self.val)
...
>>> myclass.__repr__ = showval
>>> print inst
5

note that this will change the "repr" for all instances of the
class, but that should be fine for a __repr__ type of function.

sadly, trying to assign the function to be a method of the instance
doesn't work. the function doesn't really become a "method" it
just remains a function, and it does get the "self" argument
filled when called. i would really like to know if there is a 
clean way to actually make that function a full method?





More information about the Python-list mailing list