假设我有以下内容:
class A:
@classmethod
def __str__(cls): return 'A'
意图是让 str(A)
返回 'A'
。
但实际上,我得到的是 <class '__main__.A'>
。
当我定义 __repr__
时,发生了相同的事情。
我该如何为一个类定义一个字符串表示形式?
我需要某种东西来响应 str(A)
,因为我无法控制调用。
假设我有以下内容:
class A:
@classmethod
def __str__(cls): return 'A'
意图是让 str(A)
返回 'A'
。
但实际上,我得到的是 <class '__main__.A'>
。
当我定义 __repr__
时,发生了相同的事情。
我该如何为一个类定义一个字符串表示形式?
我需要某种东西来响应 str(A)
,因为我无法控制调用。
您可以使用一个元类来覆盖类对象的基类type
的__str__
方法:
class meta(type):
def __str__(cls):
return cls.__name__
class A(metaclass=meta):
pass
print(str(A))
A
__str__
和__repr__
是在所涉及的对象类型上查找的。如果所涉及的对象是一个类,则其类型是其元类。 - khelwood