【问题标题】:String representation of a class in Python 3Python 3 中类的字符串表示
【发布时间】:2015-08-15 14:36:52
【问题描述】:

我希望我的类有一个基于类变量(在派生类中可能不同)的字符串表示。 This answer 建议元类可能是要走的路:

class MC(type):
    def __repr__(self):
        return 'Wahaha!'

class C():
    __metaclass__ = MC

print(C)

但这在 Python 3 中不起作用,返回

<class '__main__.C'>

而不是Wahaha!。 有人可以向我解释一下 Python 2 和 3 之间发生了什么变化以及如何在 Python 3 中实现它吗?

【问题讨论】:

  • 旁注:PEP 8 建议每个缩进使用 4 个空格,而不是 2 个。作为一般规则,与几乎所有人一样做同样的事情会让生活更简单。我确实编辑了您的问题,以免让新手相信偏离标准建议是个好主意。

标签: python class python-3.x class-variables representation


【解决方案1】:

改变的是元类在 3.x 中的声明方式。

class C(metaclass=MC):
    pass

【讨论】:

    猜你喜欢
    • 2020-01-26
    • 2010-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 2017-10-07
    • 2018-01-08
    相关资源
    最近更新 更多