我知道如何提供一个对象实例的非正式表示,但我想提供一个类名称的非正式字符串表示。
具体地说,我想在打印类(__main__.SomeClass)时覆盖返回的内容。
>>> class SomeClass:
... def __str__(self):
... return 'I am a SomeClass instance.'
...
>>> SomeClass
<class __main__.SomeClass at 0x2ba2f0fd3b30>
>>> print SomeClass
__main__.SomeClass
>>>
>>> x = SomeClass()
>>> x
<__main__.SomeClass instance at 0x2ba2f0ff3f38>
>>> print x
I am a SomeClass instance.
class A
中的def str(self):
应该改为def __str__(self):
。 - chaos.ct__str__
时调用repr(A)
,它将不会使用您自定义的消息。但是,如果您定义了__repr__
并且调用了str(A)
,如果未定义str
(默认元类type
没有定义),它将使用您自定义的消息。 - agf__repr__
(repr(A))需要相同的元类技巧。如果其中某个方法未定义,则有几种回退方法,但这是另一个话题,并在std lib参考文档中有很好的记录。 - Jürgen Strobel