在本文中, Nick Coghlan讨论了PEP 435 Enum类型的一些设计决策,以及如何EnumMeta进行子类化以提供不同的Enum体验。
但是,我给出的建议(我是stdlib的主要Enum作者)关于使用元类的建议是,在没有充分好的理由的情况下不应该这样做-例如,无法使用类装饰器或专用工具来完成所需的工作隐藏任何丑陋的功能;而在我自己的工作,我已经能够做到我需要什么简单的使用__new__,__init__在创建时,和/或正常类/实例方法Enum类:
然后是一个警告性的故事,在研究Enum,有和没有元类子类化时要小心:
考虑到所有这些,我什么时候需要摆弄EnumMeta自己?