Dlaczego nie mogę zastąpić metody __str__ obiektu Pythona inną funkcją?

Oto kod:

<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
</code>

Miałem nadzieję zobaczyć takie wyniki

<code>2
</code>

Jednak zamiast tego widzę standardową reprezentację:

<code><__main__.Dummy object at 0x01237730>
</code>

Czemu?

questionAnswers(2)

yourAnswerToTheQuestion