Warum kann ich die __str__-Methode eines Python-Objekts nicht durch eine andere Funktion ersetzen?

Hier ist der Code:

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

Ich hatte gehofft, die Ausgabe so zu sehen

<code>2
</code>

Stattdessen sehe ich jedoch die Standarddarstellung:

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

Warum?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage