私は以下のコード (Java) のように、Python で列挙型を使用したいと考えています。私は Python の初心者です。Java で次のコードがあり、その機能を Python で再現したいと考えています。
class Direction {
public enum Direction {LEFT, RIGHT, UP, DOWN}
public void navigate(Direction direction)
switch(direction){
case Direction.LEFT:
System.out.print("left");
break;
case Direction.RIGHT:
System.out.print("right");
break;
case Direction.UP:
System.out.print("up");
break;
case Direction.DOWN:
System.out.print("down");
break;
}
}
ユーザーに Python メソッドに列挙型のみを提供するように強制するにはどうすればよいですか?
ベストアンサー1
Python は動的かつダックタイプ化されており、変数は型を変更することができ、メソッドに型を強制することはできません。
ただし、 を使用してメソッド本体内の型をチェックすることはできますisinstance()
。
。 -コメントを見るisinstance()
enum
ユーザーは将来の拡張のために サブクラス化できるようになります
例えば
# Python 2.x: pip install enum34
from enum import Enum
class Direction(Enum):
LEFT = "left"
RIGHT = "right"
UP = "up"
DOWN = "down"
def move(direction):
# Type checking
if not isinstance(direction, Direction):
raise TypeError('direction must be an instance of Direction Enum')
print direction.value
>>> move(Direction.LEFT)
left
>>> move("right")
TypeError: direction must be an instance of Direction Enum