更改类本身的字符串表示形式

时间:2016-12-07 05:32:43

标签: python

让我举个例子:

class Test:
    def __repr__(self):
        return "hi"

这会更改Test类型的对象的字符串表示形式,但不更改Test本身的字符串表示形式:

print(Test)
--> "<class 'Test'>"

是否也可以覆盖类本身的字符串表示形式?

1 个答案:

答案 0 :(得分:3)

您需要使用元类:

class Meta(type):
    def __repr__(self):
        return "hi"

class Test(metaclass=Meta):
    pass

print(Test)
>>> hi

__repr__方法适用于不在类上的实例。但是在python中,类本身就是元类type的“实例”。因此,如果您使用自定义__repr__方法创建自定义元类,则使用您的元类创建的所有类都将使用您的__repr__方法。

更多关于meta classes的阅读。