C 의 enum 에 해당하는 것이 파이썬 3.4 이후부터 Enum 제공된다.
from enum import Enum
class ENUM_TIMEFRAMES(Enum):
PERIOD_M1 = 1
PERIOD_M15 = 15
혹은,
# DLL 함수인자로 C enum 있는 경우 아래 처럼 정의해야 전달가능.
from enum import IntEnum
class ENUM_TIMEFRAMES(IntEnum):
PERIOD_M1 = 1
PERIOD_M15 = 15
c의 #define 용도처럼 사용하는 예.
class CyMAXNM_ARRVALUE_CySTCM(IntEnum):
value = 10
class CyMAXNUM_SYMBOLS(IntEnum):
value = 10
########## 위에서 정의된 상수값을 배열 크기 지정용도로 사용하는 예.
########## 상기 Enum 값만 수정하면 코드의 나머지 영역에 모두 적용.
class CyST_CANDLE_forMULTI(Structure):
_fields_ = [("Open", c_double),("High", c_double),("Low", c_double),("Close", c_double), # OHLC for one candle.
("MA", c_double * CyMAXNM_ARRVALUE_CySTCM.value), # MA5, MA20, MA40, MA80, MA160
("PriceExt", c_double * CyMAXNM_ARRVALUE_CySTCM.value), # ex. Kalman Filtered.
("ValueExt", c_double * CyMAXNM_ARRVALUE_CySTCM.value) # ex. ATR etc.
]
enum 의 정수값에 해당하는 값으로 enum 값 확보예.
class CyENUM_TIMEFRAMES(IntEnum):
PERIOD_M1 = 1
PERIOD_M5 = 5
PERIOD_M10 = 10
PERIOD_M15 = 15
PERIOD_H1 = 16385
PERIOD_H4 = 16388
PERIOD_D1 = 16408
GetCyENUM_TIMEFRAMES_from_int = {
1: CyENUM_TIMEFRAMES.PERIOD_M1,
5: CyENUM_TIMEFRAMES.PERIOD_M5,
10: CyENUM_TIMEFRAMES.PERIOD_M10,
15: CyENUM_TIMEFRAMES.PERIOD_M15,
16385: CyENUM_TIMEFRAMES.PERIOD_H1,
16388: CyENUM_TIMEFRAMES.PERIOD_H4,
16408: CyENUM_TIMEFRAMES.PERIOD_D1
}
### 활용예.
print("Received Data Candle. timeframe = ",GetCyENUM_TIMEFRAMES_from_int[cyst_DataCandleSymbolMulti.i_timeframe].name)
출력결과.
첫등록 : 2019년 5월 16일
최종수정 :
본 글 단축주소 : https://igotit.tistory.com/2172
'지속가능티끌 > Python' 카테고리의 다른 글
Python. ctypes. structure. 구조체 (0) | 2019.05.16 |
---|---|
Python. if . 비교연산자, and, or not, in, not in , (0) | 2019.05.16 |
Python. ctypes. CFUNCTYPE. WINFUNCTYPE.콜백함수 (0) | 2019.05.16 |
Python. function, 함수 (0) | 2019.05.16 |
Python. tuple (0) | 2019.04.21 |
댓글