Ersatz für "self.__class__.__name__" ???

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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Code: Alles auswählen

class test1(object):
    def test1(self):
        print self.__class__.__name__

class test2(test1):
    def test2(self):
        self.test1()

t = test2()
t.test2()
Die test2 Klasse erbt von test1 und ruft eine Methode von dieser auf.
In test1 möchte ich den Namen der "Unterklasse" wissen. In dem Fall also "test2".
Mit "self.__class__.__name__" habe ich das richtige Ergebnis.

Geht es aber auch ohne viel Magie?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Was ist daran magisch? "__class__" ist ein Attribut jedes Objekts, und "__name__" eines jeder Klasse.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Irgendwie habe ich im Hinterkopf, das man die doppel-unterstrich-Sachen besser nicht nutzten sollte...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Und schon gar nicht ``__init__`` oder ``__name__``...

Nein, es geht um Einfach-Unterstrich-Namen wie ``_getframe()``. Die sind Implementationspezifisch.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Nein ich denke schon er meint man sollte __solche__ Namen nicht direkt benutzen. In den meisten Fällen gibt es einen anderen, offiziellen Weg.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

BlackJack hat geschrieben:In den meisten Fällen gibt es einen anderen, offiziellen Weg.
Genau deswegen meine Frage... Aber wenn self.__class__.__name__ ok ist, dann bleibe ich dabei ;)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Bei Newstyle Klassen geht auch type(self).__name__
TUFKAB – the user formerly known as blackbird
Antworten