2011-12-07 45 views
1

假设下面的C代码:什么是pythonic模块之间进行通信的方式?

// 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: 
     ; 
    } 
} 

什么是实现这个Python的方式?对我来说,简单的方法是使用字符串而不是枚举,但是我怎样才能确保所有字符串的输入都正确(即在所有文件中都是相同的)?

+0

你问的Python的方式来实现'enum's,实现'之开关语句的Python的方式,对Python的方式,以模块或东西之间的沟通其他?你能提供更多的代码吗?根据你在做什么,有不同的解决方案。 – Nate

+0

@ ivand58:您认为模块间通信的用例是什么? – pyfunc

+0

你能提供一个用户场景吗?从它的外观来看,我认为你需要的只是安装['carrot'](http://ask.github.com/carrot/introduction.html)...;)但是我可能会错过一些东西! – mac

回答

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 
0

使字符串常量,然后你可以引用它们的名称,所以你没有魔术字符串挂在源代码中。你可以在一个通用模块或类中定义这些常量。

相关问题