2016-08-29 2 views
-3

変数に与えられた値を明示的に定義する方法はありますか?のは、私は、変数サイズの値が「小さな」「中」、または「大きな」と他には何のいずれかになりたいとしましょう。Python - 変数の許容値

EDIT: 変数がリストの外側から何かに設定されている状況を避けたいとします(この例では「小さい」など)。 Javaの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ライブラリによってPythonでサポートされている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'です。 Pythonのダックタイピングを考えると、何らかの変数を何かに設定することができるので、そのような代入を防ぐような定式化はありません。 –

+0

質問は 'どのような値が与えられた変数を持つことができるのかを明示的に定義する方法は? '列挙型は関連していますが、Pythonでは一般的な変数に限定された値を持つように制限することはできません。クラスフィールドは別の問題です。 – Blaisorblade

関連する問題