【问题标题】:Get class name at class level在类级别获取类名
【发布时间】:2020-05-25 17:15:09
【问题描述】:

有没有办法在 Python 中获取类级别的类名?

最小工作示例:

class TestClass:

    print("We are now in the class {} at class level".format(WHAT SHOULD I PUT HERE?))  # Should return "We are now in the class TestClass at class level"
    pass

【问题讨论】:

    标签: python


    【解决方案1】:

    您可以通过以下方式找到答案:

    class TestClass:
        print(locals())
    

    打印出来:

    {'__module__': '__main__', '__qualname__': 'TestClass'}
    

    所以你可以使用__qualname__,即

    class TestClass:
        print("We are now in the class {} at class level".format(__qualname__))
    

    【讨论】:

      【解决方案2】:

      仅适用于已定义的类:使用type(self).__name__,其中.__name__ 是默认属性。

      请参阅@Alex Hall's answer 以使用__init__ 发生之前的类名,使用locals()。

      【讨论】:

      • @Adriaan 在__init__ 之前询问如何操作,所以self 不可用
      • 我的错,更新答案。
      【解决方案3】:

      这行得通:

      class Test :
         CLASSNAME = locals()['__qualname__']
      

      在班级的任何地方或外部使用 CLASSNAME 变量。

      【讨论】:

      • 你可以直接使用__qualname__。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 1970-01-01
      • 2013-03-25
      相关资源
      最近更新 更多