Tuesday, May 8, 2012

Why can't I replace the __str__ method of a Python object with another function?

Here is the code:



class Dummy(object):
def __init__(self, v):
self.ticker = v


def main():
def _assign_custom_str(x):
def _show_ticker(t):
return t.ticker
x.__str__ = _show_ticker
x.__repr__ = _show_ticker
return x


a = [Dummy(1), Dummy(2)]

a1 = [_assign_custom_str(t) for t in a]
print a1[1]
# print a1[1].__str__ # test to if orig __str__ is replaced


I was hoping to see the output like this



2


However, instead I see the standard representation:



<__main__.Dummy object at 0x01237730>


Why?





No comments:

Post a Comment