2016-08-29 5 views
-3

주어진 변수에 어떤 값이 명시 적으로 정의 될 수 있습니까? 의 내가 변수 크기의 값이 '작은', '매체', 또는'큰'와 아무것도가 될하기를 원하는 경우를 생각 해보자.파이썬 - 허용되는 변수 값

EDIT : 변수가 목록 밖에서 설정되어있는 경우를 피하기를 원합니다 (예 : '이 경우'). 자바에서 enum처럼. 이 변수는 클래스 필드입니다.

+0

무엇인지에 대한 정의 , 또는 누구? 문서 문자열, 열거 자, 상수, 어설 션, 유효성 검사 또는 모든 조합이 유용 할 수 있습니다. 지금 무엇을 얻었습니까? 정확히 무엇이 문제입니까? – jonrsharpe

+0

각 변수에는 이미 특정 유형이 있습니다. 'small','medium','large'가 정수에 할당 된 변수가 아니라면'size' 변수는 타입 문자열이됩니다. 그래도 질문이 있으시면 ** 매우 모호합니다. –

+0

ve @JakeBut : 달성하고자하는 것에 대해 몇 가지 예를 들어주십시오. 귀하의 요구 사항이 명확하지 않습니다. –

답변

3

가장 간단한 방법은 항상 먼저 입력의 유효성을 검사하는 전용 방법을 사용하고 올바른 경우 변수를 설정하는 것입니다.

class Test: 
    def __init__(self): 
     self.__variable = None 

    def set_variable(self, value): 
     if value not in ('small', 'medium', 'big'): 
     raise ValueError() 
     self.__variable = value 
+0

그는 중소 규모의 문자열을 사용하고 싶다고 말한 적이 없습니다. 매우 광범위하고 모호하기 때문에이 질문과 같은 대답은 피하십시오. –

+0

@MoinuddinQuadri 이것을 어떻게 압니까? 이미 말 했니? –

+0

@ Mr.goosberry 나는 이것을 모른다. 그래서 나는 아무것도 대답하지 않았다. 그것은 변수 이름 즉'size'의 내 가정에 근거합니다. –

2

당신은 enum 라이브러리 파이썬에서 지원하는 enumeration를 묘사 : 당신은 몇 가지 예를 찾을 수 아래

from enum import Enum 

class Size(Enum): 
    small = 'small' 
    medium = 'medium' 
    big = 'big' 

size = Size('big') 
print(size) 
try: 
    size = Size('tiny') 
except ValueError as e: 
    print("invalid Size (", e.args[0].split()[0], 
      "). Size must be one of 'small', 'medium' or 'big'", sep='') 

출력 :

Size.big 
invalid Size ('tiny'). Size must be one of 'small', 'medium' or 'big' 
+0

'size = 'tiny''을 설정할 수 없습니까? – Blaisorblade

+0

네,하지만 그것은'str'이 될 것입니다. 파이썬의 오리 타이핑을 감안할 때 어떤 변수라도 설정할 수 있으므로 그러한 할당을 막을 수있는 공식은 없습니다. –

+0

질문은'주어진 변수가 가질 수있는 값을 어떻게 명확하게 정의 할 수 있습니까? '라는 질문을합니다. 열거 형은 관련이 있지만, 파이썬에서 일반 변수에 제한된 값 집합을 제한 할 수있는 것처럼 보이지는 않습니다. 수업 분야는 또 다른 문제입니다. – Blaisorblade