我正在尝试为一个Node
类创建一组状态。通常,我会通过将每个Node
实例的state
变量设置为 an来做到这一点int
,并记录哪个 int 对应于哪个状态(因为我没有enum
s)。
这一次,我想尝试一些不同的东西,所以我决定这样做:
class Node:
state1 = 1
state2 = 2
def __init__(self):
...
这很好用。但是,我遇到了一个问题,我有很多状态 - 太多无法手动输入。此外,有这么多状态,我可能会犯错误并将相同的分配int
给两个状态。在测试状态时,这将成为错误的来源(例如:如果两者都存在,则if self.state==Node.state1
可能会失败)。Node.state1
Node.state2
3
出于这个原因,我想做这样的事情:
class Node:
def __init__(self):
...
...
for i,state in enumerate("state1 state2".split()):
setattr(Node, state, i)
虽然这可以修复为状态分配值时的人为错误,但它非常难看,因为类变量是在类定义之外设置的。
有没有办法以这种方式在类定义中设置类变量?理想情况下,我想这样做:
class Node:
for i,state in enumerate("state1 state2".split()):
setattr(Node, state, i)
...但这不会起作用,因为Node
尚未定义,并且会导致NameError
或者,enum
在 python3.3 中是否存在 s?
我在 Python3.3.2 上,如果重要的话