2012-12-30 15 views
6

Tôi có đoạn mã sau:Python - làm thế nào tôi có thể nhận được tên lớp từ bên trong một phương pháp học - sử dụng @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() 

Đầu ra là:

type 
ObjectOne 

Tôi muốn đầu ra là:

ObjectOne 
ObjectOne 

Nhưng tôi muốn giữ test_cls làm phương thức lớp học qua @classmethod decorat hoặc là.

Tôi làm cách nào để thực hiện việc này?

Trả lời

5

Đó là cls.__name__. cls đã trỏ đến lớp học và giờ bạn sẽ nhận được tên của lớp của mình (luôn là type).

+4

's/always/usually /'. Đá Metaclasses. – delnan

23

Một classmethod nhận lớp là đối số của nó. Đó là lý do tại sao bạn gọi nó là cls. Chỉ cần thực hiện cls.__name__.

Các vấn đề liên quan