让我们假设以下C代码:
// events.h
enum Events {eOne, eTwo, eThree};
enum Events getEvent(void);
...
//ctrl.c
#include "events.h"
void ctrl(void)
{
switch(getEvent())
{
case eOne:
// ...
break;
case eTwo:
// ...
break;
case eThree:
// ...
break;
default:
;
}
}
实现这个的pythonic方法是什么?对我来说,简单的方法是使用字符串而不是枚举,但我怎样才能确保所有字符串都正确输入(即在所有文件中都相同)?
答案 0 :(得分:2)
class Animal:
DOG=1
CAT=2
x = Animal.DOG
答案 1 :(得分:1)
以下Python代码与C代码的交互方式类似。要使用其他模块中的变量,您需要先导入该模块。
// events.py
class Events:
eOne, eTwo, eThree = range(3)
def getEvent():
# add code for getEvent here (might have been in events.c for C code)
return some_event
...
// ctrl.py
from events import Events, getEvent
def ctrl():
event = getEvent()
if event == Events.eOne:
# ...
elif event == Events.eTwo:
# ...
elif event == Events.eThree:
# ...
else:
# default
答案 2 :(得分:0)
使字符串成为常量,然后您可以按名称引用它们,这样您就不会在源代码中隐藏魔术字符串。您可以在公共模块或类中定义这些常量。