我有以下代码:
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
但我想通过test_cls
装饰器将@classmethod
作为类方法。
我该如何做到这一点?
答案 0 :(得分:27)
classmethod接收类作为其参数。这就是你称之为cls
的原因。只需cls.__name__
。
答案 1 :(得分:7)
这是cls.__name__
。 cls
已经指向该类,现在您将获得其类的名称(始终为type
)。
答案 2 :(得分:0)
我有一个类似的问题,并且想要获取日志记录的类名和函数/方法名。
__name__ : gives the program name
__class__.__name__ gives the class name
inspect.stack()[0] [3]给出模块名称。 (您必须导入检查)。
欢呼