2012-12-30 2 views
6

Ich habe den folgenden Code:Python - wie kann ich den Klassennamen erhalten innerhalb einer Klassenmethode - mit @classmethod

class ObjectOne(object): 
    @classmethod 
    def print_class_name(cls): 
     print cls.__class__.__name__ 

    def print_class_name_again(self): 
     print self.__class__.__name__ 

if __name__ == '__main__': 
    obj_one = ObjectOne() 
    obj_one.print_class_name() 
    obj_one.print_class_name_again() 

Die Ausgabe lautet:

type 
ObjectOne 

Ich möchte die Ausgabe zu sein:

ObjectOne 
ObjectOne 

Aber ich mag test_cls als Klassenmethode über den @classmethod decorat halten oder.

Wie kann ich das erreichen?

Antwort

5

Es ist cls.__name__. cls zeigt bereits auf die Klasse, und jetzt erhalten Sie den Namen seine Klasse (die immer type ist).

+4

's/immer/gewöhnlich /'. Metaklassen rocken. – delnan

23

Eine Klassenmethode erhält die Klasse als Argument. Deshalb nennst du es cls. Tun Sie einfach cls.__name__.

Verwandte Themen