substitution __str__ method of an instance

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Thu Oct 23 17:49:33 EDT 2008


On Thu, 23 Oct 2008 10:55:56 +0200, Christian Heimes wrote:

> netimen wrote:
>> How can I substitute __str__ method of an instance?
> 
> It's not possible. For performance and other reasons most __*__ methods
> are looked up on the type only.
> 
> Christian

However, you can dispatch back to the instance if you really must:


class MyObj(object):
    def __init__(self):
        self.__str__ = lambda self: "I'm an object!"
    def __str__(self):
        return self.__str__(self)


But honestly, this sounds like a bad idea. If instances of the one class 
have such radically different methods that they need to be treated like 
this, I question whether they actually belong in the same class.




-- 
Steven



More information about the Python-list mailing list