您需要
__repr__在元类上定义。
class meta(type): def __repr__(cls): return 'My class %s' % cls.__name__class A(object): __metaclass__ = meta
__repr__返回对象实例的表示形式。因此,通过定义
__repr__on
A,可以指定想要
repr(A())的外观。
要定义类的表示形式,您需要定义如何
type表示其实例。在这种情况下,请
type使用
__repr__根据需要定义的自定义元类替换。
>> repr(A)My class A
如果您想
__repr__为每个类定义一个自定义,我不确定是否有一种特别干净的方法。但是你可以做这样的事情。
class meta(type): def __repr__(cls): if hasattr(cls, '_class_repr'): return getattr(cls, '_class_repr')() else: return super(meta, cls).__repr__()class A(object): __metaclass__ = meta @classmethod def _class_repr(cls): return 'My class %s' % cls.__name__class B(object): __metaclass__ = meta
然后,您可以按班级进行自定义。
>> repr(A)My class A>> repr(B)<__main__.B object at 0xb772068c>



