2010-08-29 37 views

Trả lời

27

Thay thế staticmethod bằng phương pháp đẳng cấp. Điều này sẽ được thông qua lớp khi nó được gọi, vì vậy bạn có thể nhận được tên lớp từ đó.

class Bar(object): 

    @classmethod 
    def bar(cls): 
     # code 
     print cls.__name__ 

class Foo(Bar): 
    # code 
    pass 

>>> Bar.bar() 
Bar 

>>> Foo.bar() 
Foo 
+1

Cảm ơn rất nhiều Dave! –

+2

Điều này không trả lời được câu hỏi. Câu hỏi đặt ra là làm thế nào để làm điều đó với một phương pháp tĩnh. – sebix

2

Nếu bạn cần tìm thông tin về lớp học, cách thích hợp là sử dụng @classmethod.

class Bar(object): 
    @classmethod 
    def bar(cls): 
     # code 
     print(cls.__name__) 

class Foo(Bar): 
    # code 
    pass 

Bây giờ phương pháp bar của bạn có một tham chiếu đến lớp như cls đó là lớp học thực tế của người gọi. Và như được hiển thị trong mã, cls.__name__tên của lớp bạn đang tìm kiếm.

>>> Foo.bar() 
Foo 
>>> Bar.bar() 
Bar 
+0

Nó đã được trả lời, nhưng cảm ơn anyway! –

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