抱歉标题,我不确定如何从更一般的意义上表达这个问题。我正在研究 brainfuck解析器。该语言有 8 种标记,我目前用以下类表示:
# Types of lexical tokens
class Token: pass
class IncPtrToken(Token): pass
class DecPtrToken(Token): pass
class IncByteToken(Token): pass
class DecByteToken(Token): pass
class OutputByteToken(Token): pass
class InputByteToken(Token): pass
class LoopStartToken(Token): pass
class LoopEndToken(Token): pass
在另一种语言中,我可能会使用枚举来表示不同的类型,但这在 Python 中似乎是一个合理的替代方案。
我读到有 other ways在 Python 中表示枚举,但我认为这种风格是合适的,因为其中一些实体可能会携带额外的数据。例如,当在解析器中表示节点类型时,像循环这样的节点将包含一个成员,其中的节点位于循环内。
最佳答案
Python 在 3.4 中获得了一个官方的 Enum 类。
如果您在 2.4 和 3.3 之间使用 Python,请检查 enum34 backport .
有可能add other behavior and state以及自定义枚举类。
关于python - 通过空子类对对象进行分类是 Pythonic 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18476324/