关于python:用空的子类来分类对象是python吗?

Is it Pythonic to classify objects by empty child classes?

对不起,这个题目,我不知道如何用更一般的词来表达这个问题。我在研究一个该死的解析器。该语言有8种令牌,我目前用以下类表示:

1
2
3
4
5
6
7
8
9
10
# 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中,这似乎是一种合理的选择。

我已经读到了用Python表示枚举的其他方法,但是我认为这种样式是合适的,因为其中一些实体可能携带额外的数据。例如,在解析器中表示节点类型时,像循环这样的节点将包含一个成员,其中包含循环中的节点。


Type:

1
import this

(也叫pep 20)很快解释了什么是Python。

"如果实现很难解释,那是个坏主意。如果实现很容易解释,这可能是一个好主意。"

我不知道你打算怎么做你那该死的翻译。我想您不打算将特定的函数(与给定的…令牌所做的相关)放在…令牌类中。

我将使用函数,或者,如果它们是空的,则使用一个列表来执行此操作,在Py3.4发布后立即用枚举替换。

简而言之:很难解释?继续思考!


python在3.4中获得了一个正式的枚举类。

如果您在2.4和3.3之间使用Python,请检查Enum34的后端端口。

也可以向自定义枚举类添加其他行为和状态。