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
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 11. Mai 2007, 13:52

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?

CMS in Python: http://www.pylucid.org
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

Freitag 11. Mai 2007, 13:56

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
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 11. Mai 2007, 14:57

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 11. Mai 2007, 15:48

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

Freitag 11. Mai 2007, 15:52

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
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Freitag 11. Mai 2007, 15:53

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

CMS in Python: http://www.pylucid.org
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:

Freitag 11. Mai 2007, 16:20

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