python - 通过空子类对对象进行分类是 Pythonic 吗?

标签 python enums

抱歉标题,我不确定如何从更一般的意义上表达这个问题。我正在研究 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/

相关文章:

python - 在 python 中解析 xml 文件并提取 <cite>

java - 为什么枚举常量类体可以定义任意实例字段和方法,但不能声明静态成员或定义构造函数

iphone - FMDB 存储 typedef 枚举值

c# - 如何在 string.format 中显示 List<DayOfWeek> 的所有内容?

java - Hibernate 枚举映射

python - 使用 Pandas 将 csv 转换为 Json

python - 替换对应于另一个数组的索引数组中的值

jquery - Enum JQuery 上的 $.each

python - 如何在 Django 中获取具有反向关系的所有类的集合?

python - pip 安装 dynamic-dynamodb InsecurePlatformWarning