如何为一个类指定字符串表示形式

3

假设我有以下内容:

class A:

  @classmethod
  def __str__(cls): return 'A'

意图是让 str(A) 返回 'A'

但实际上,我得到的是 <class '__main__.A'>

当我定义 __repr__ 时,发生了相同的事情。

我该如何为一个类定义一个字符串表示形式?

我需要某种东西来响应 str(A),因为我无法控制调用。


2
__str____repr__是在所涉及的对象类型上查找的。如果所涉及的对象是一个类,则其类型是其元类。 - khelwood
1
那么我应该怎么做才能得到我想要的结果? - RussAbbott
1
你需要编写一个自定义元类。 - juanpa.arrivillaga
1个回答

4

您可以使用一个元类来覆盖类对象的基类type__str__方法:

class meta(type):
    def __str__(cls):
        return cls.__name__

class A(metaclass=meta):
    pass

print(str(A))

这将输出:
A

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接