2014-04-23 2 views
0

:파이썬에서 플래그를 표시하는 방법은 무엇입니까? 다음 C# 코드처럼

[Flags] 
public enum CandleFlags : short 
{ 
    /// <summary>No flags set</summary> 
    None = 0x00, 

    /// <summary>IsDoji</summary> 
    Doji = 0x01, 

    /// <summary>IsHammer</summary> 
    Hammer = 0x02, 

.....

플래그는 타입 doji 망치 될 수처럼 하나의 객체가 여러 플래그를 가질 수 있기 때문에 만 열거하지?

int를 사용해야하나요? 어쩌면

class CandleFlags: 
    is_doji = False 
    is_hammer = False 

flags = CandleFlags() 
flags.is_doji = True 
+0

는 C#으로 모두 같은이 개념에 따라 확장 할 수는 int이며 ... 그리고 비트를 수행하고 플래그에 대해 ... –

답변

0
class CandleFlags: 
     DOJI= 0x01 
     HAMMER=0x02 
     SOMETHING=0x04 

print CandleValue & CandleFlags.DOJI # doji bit is set 
print CandleValue & CandleFlags.SOMETHING #something bit is set 
print CandleValue & ~CandleFlags.HAMMER # Hammer bit is not set 

:

+0

내가이 충분하다고 생각 : int 및 정수 플래그의 클래스 –

0

여기에 한 가지 방법입니까?

이 더

class FlagChecker: 
    def __init__(self,flags): 
     self.flags = flags 
    def __getattr__(self,attr): 
     if attr.startswith("is"): 
      flg = getattr(self.flags,attr[2:].upper(),0) 
      return lambda v:bool(v & flg) 

checker = FlagChecker(CandleFlags) 
print checker.isHammer(candleValue) 
print not checker.isDoji(candleValue) 
print checker.isYellow(candleValue) #always false ... no YELLOW flag 
관련 문제