2012-12-30 11 views
6

मैं निम्नलिखित कोड है:अजगर - मैं कैसे एक वर्ग विधि के भीतर से वर्ग के नाम प्राप्त कर सकते हैं - का उपयोग कर @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() 

उत्पादन होता है:

type 
ObjectOne 

मैं उत्पादन चाहते हैं होने के लिए:

ObjectOne 
ObjectOne 

लेकिन मैं @classmethod decorat के माध्यम से एक वर्ग पद्धति के रूप में test_cls रखना चाहते हैं या।

मैं यह कैसे पूरा कर सकते हैं?

उत्तर

5

यह cls.__name__ है। cls पहले से ही कक्षा को इंगित करता है, और अब आपको का नाम वर्ग (जो हमेशा type है) का नाम प्राप्त कर रहा है।

+4

'/ हमेशा/आमतौर पर /'। Metaclasses रॉक। – delnan

23

एक कक्षा विधि कक्षा को इसके तर्क के रूप में प्राप्त करता है। यही कारण है कि आप इसे cls पर कॉल कर रहे हैं। बस cls.__name__ करें।

संबंधित मुद्दे