Seite 1 von 1

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

Verfasst: Freitag 11. Mai 2007, 13:52
von jens

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?

Verfasst: Freitag 11. Mai 2007, 13:56
von birkenfeld
Was ist daran magisch? "__class__" ist ein Attribut jedes Objekts, und "__name__" eines jeder Klasse.

Verfasst: Freitag 11. Mai 2007, 14:57
von jens
Irgendwie habe ich im Hinterkopf, das man die doppel-unterstrich-Sachen besser nicht nutzten sollte...

Verfasst: Freitag 11. Mai 2007, 15:48
von Leonidas
Und schon gar nicht ``__init__`` oder ``__name__``...

Nein, es geht um Einfach-Unterstrich-Namen wie ``_getframe()``. Die sind Implementationspezifisch.

Verfasst: Freitag 11. Mai 2007, 15:52
von 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.

Verfasst: Freitag 11. Mai 2007, 15:53
von jens
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 ;)

Verfasst: Freitag 11. Mai 2007, 16:20
von mitsuhiko
Bei Newstyle Klassen geht auch type(self).__name__