2015-01-09 2 views
2

기본적으로 상태 코드를 보유하는 데이터 구조 및 각 상태 코드와 연관된 명령문을 작성하는 클래스를 작성하고 있습니다. 메소드를 호출하고 수치 상태 코드를 제공하고 사전을 되찾고 싶습니다.Python에서 인스턴스를 만들지 않고 클래스 변수를 참조하십시오.

class StatusCode(object): 
    def __init__(self): 
     self.codes = { 0: { 'flag': "QEX_OK",  'message': "job successful"           }, 
         1: { 'flag': "QEX_CMDLINE", 'message': "general cmd line syntax or semantic error"    } 
      } 
    @staticmethod 
    def get_code(code): 
     return self.codes[code] 

어떻게하면 제대로 할 수 있습니까?

많이 thx.

답변

4

사용 @classmethod :

class StatusCode(object): 
    codes = { 
      0: { 'flag': "QEX_OK",  'message': "job successful"       }, 
      1: { 'flag': "QEX_CMDLINE", 'message': "general cmd line syntax or semantic error"}, 
      } 

    @classmethod 
    def get_code(cls, code): 
     return cls.codes[code] 
+0

이 예에서 "cls"란 무엇입니까? – BenH

+0

@BenH 인스턴스 메소드에서 * 인스턴스 * 객체'self'와 비슷한 * 클래스 * 객체입니다. – jonrsharpe

+0

'StatusCode' 클래스 객체에 대한 참조입니다.'self'는 생성 된 객체 인스턴스에 대한 참조와 같습니다. –

1

방법에 대해 :

class StatusCode(object): 
    codes = {0: { 'flag': "QEX_OK",  'message': "job successful"           }, 
       1: { 'flag': "QEX_CMDLINE", 'message': "general cmd line syntax or semantic error"    } 
      } 

    @staticmethod 
    def get_code(code): 
     return StatusCode.codes[code] 

print StatusCode.get_code(1) 
+0

이 내가 초기화와 장난되었다() 및 필요하지 않았다 .... 필요한 것입니다 신난다. 많은 thx. – BenH

관련 문제