__repr__ von einer Höher gelegenen Klasse verwenden?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Hali hallo. Ich habe mal ne Frage. Mit erben geht ja einiges ;) Aber irgentwie bekomme ich folgendes nicht hin:

Ich habe zwei `Token` Klassen. (`TextToken` und `Token` als Basis):

Code: Alles auswählen

class Token(object):
    """
    This class is used for save the token specific data
    (the type and the value).
    """
    def __init__(self, type, value=None, match=None):
        self.type = type
        self.value = value
        self.match = match

    def __repr__(self):
        return '<%s %r>' % (
            self.__class__.__name__,
            ('%s: %s' % (self.type, self.value))
        )

class TextToken(Token):
    def __init__(self, value):
        self.type = 'text'
        self.value = value
Wenn ich nun `__repr__` von `TextToken` aufrufe, ist klar, bekomme ich z.B. folgende Ausgabe:

Code: Alles auswählen

<TextToken u'text: italic'>
Ist es möglich, das ich anstatt von `TextToken` auch `Token` bekomme? Also die ""Hauptklasse""?
(gut, ich könnte einfach `Token` in den __repr__ schreiben, das mag ich aber nicht :)

MfG EnTeQuAk
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Du kannst in ``TextToken.__repr__`` auch ``Token.__repr__`` aufrufen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

joa ;) super Idee.. hi hi :)

Aber wie kann ich die Klasse herausfinden, von der z.B. `TextToken` erbt? (muss ja irgentwie gehen oder?)


MfG EnTeQuAk
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Entweder du schreibst es einfach hin, indem du die Class-Zeile abliest oder du nutzt ``super()``. Mit ``super(TextToken, self).__repr__()`` in ``TextToken.__repr__()`` sollte das gehen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Leonidas hat geschrieben:Du kannst in ``TextToken.__repr__`` auch ``Token.__repr__`` aufrufen.
Aber was würde ihm das bringen?
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

birkenfeld hat geschrieben:Aber was würde ihm das bringen?
Er spart sich das Hinschreiben der Parent-Klasse. Keine Ahnung was er damit bezweckt, es war nur eine Antwort auf die Frage "wie kann ich die Klasse herausfinden, von der z.B. `TextToken` erbt?".
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

Keine Ahnung was er damit bezweckt,
Das weiß ich auch nicht so richtig ;)

Ich habs nun anders gelößt ;) Aber ich bin wiedermal um ein klein wenig schlauer geworden ;)

Danke an dich nochma Leonidas!

MfG EnTeQuAk
Antworten