Python 中 class 的字符串表示 3
String representation of a class in Python 3
我希望我的 classes 有一个基于 class 变量的字符串表示(在派生的 classes 中可能不同)。 This answer 建议 metaclasses 可能是要走的路:
class MC(type):
def __repr__(self):
return 'Wahaha!'
class C():
__metaclass__ = MC
print(C)
但这在Python3中不起作用,返回
<class '__main__.C'>
而不是 Wahaha!
。
有人可以向我解释 Python 2 和 3 之间发生了什么变化,以及如何在 Python 3 中进行处理吗?
改变的是在 3.x 中声明元类的方式。
class C(metaclass=MC):
pass
我希望我的 classes 有一个基于 class 变量的字符串表示(在派生的 classes 中可能不同)。 This answer 建议 metaclasses 可能是要走的路:
class MC(type):
def __repr__(self):
return 'Wahaha!'
class C():
__metaclass__ = MC
print(C)
但这在Python3中不起作用,返回
<class '__main__.C'>
而不是 Wahaha!
。
有人可以向我解释 Python 2 和 3 之间发生了什么变化,以及如何在 Python 3 中进行处理吗?
改变的是在 3.x 中声明元类的方式。
class C(metaclass=MC):
pass