【问题标题】:Python - how can I get the class name from within a class method - using @classmethodPython - 如何从类方法中获取类名 - 使用@classmethod
【发布时间】:2012-12-15 05:18:29
【问题描述】:

我有以下代码:

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 装饰器将test_cls 保留为类方法。

我怎样才能做到这一点?

【问题讨论】:

    标签: python class-method


    【解决方案1】:

    类方法接收类作为其参数。这就是为什么你称它为cls。只需cls.__name__

    【讨论】:

      【解决方案2】:

      它是cls.__name__cls 已经指向该类,现在您将获得 its 类的名称(始终为 type)。

      【讨论】:

      • s/always/usually/。元类摇滚。
      【解决方案3】:

      我有一个类似的问题,想要获取日志记录的类名和函数/方法名。

      __name__ :  gives the program name
      __class__.__name__ gives the class name
      

      inspect.stack()[0][3] 给出模块名称。 (你必须进口检查)。

      干杯

      【讨论】:

        猜你喜欢
        • 2013-02-23
        • 2022-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多