让我举个例子:
class Test:
def __repr__(self):
return "hi"
这会更改Test
类型的对象的字符串表示形式,但不更改Test
本身的字符串表示形式:
print(Test)
--> "<class 'Test'>"
是否也可以覆盖类本身的字符串表示形式?
答案 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的阅读。