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__