列挙のコンセプト
列挙クラスです
モジュールの列挙をインポートする列挙必要性を定義します。
列挙型のインポート列挙型から
列挙型の定義
クラスの色(列挙型): RED = 1 YELLOW = 2# 、彼らは一定ではありません! GREEN = 3位大文字する必要があり、各属性の値は、列挙に等しくありません 印刷(Color.RED)#の印刷結果は、これは、列挙の意義であるColor.REDされます
一般的なアナロジーで列挙利点は何ですか
列挙型プロパティの値を変更することはできません。
関連操作の列挙
列挙タグ(属性)の値を取得します:クラス名は、属性名.VALUE
クラス属性名.nameの注意の名前:列挙タグ名(プロパティ名)を取得します印刷タイプSTRの結果であり、
印刷(タイプ(Color.RED)) 印刷(タイプ(Color.RED.name)) 結果: <列挙型「色」> <クラスのSTR '>
列挙トラバーサル
色がCのための: プリント(C) 結果: 赤色 赤色 Color.YELLOW Color.GREEN
列挙の比較操作
列挙値との比較ではありませんが、複数のオブジェクト。
だから、つまり、またはであるか、==比較ではなく、同等のものを比較することができます。
カラー1#などの色の割り当て 印刷(Color.RED == Color.RED) 印刷(Color.RED == Color1.RED) 印刷(Color.REDがColor1.REDです) 印刷(Color.REDがColor1.REDされていません) 結果: 真 偽 偽 真
列挙型変換
一般的に、データベースの列挙値ラベルの代わりに列挙タグが存在します。
だから、とき列挙タグを取得するためにデータベースの値から値を尋ねました:
#データベースから変数を列挙するための受信 = 1つの#は、受信された1の値をとります 列挙タグに変換#:列挙型クラス名(A) 上記のように: 印刷(カラー(1)) 結果は以下のとおりです。 赤色
列挙は注意するものが必要
同じラベル名のうちの2つを持つことはできません1.列挙
2つの異なるラベル値は、その後、他の一つはエイリアスと同じであれば、同じことができない、および(.__ member__プロパティを使用して横断する)通常のエイリアストラバースを印刷しないであろう
警報
列挙型クラスの列挙値タグは、数値のかもしれませんが、文字列型であってもよいです。
しかし、あなたは唯一の数値タイプそれをしたいときには、ライン上IntEnum使用しています。
列挙型のインポートIntEnumから
@Unique
あなたはエイリアス(別のタグ名と同じ値)をタグ付けしたくない場合には
@Uniqueのことが可能で、この時点で別名与えられている場合UNIQUEは、クラス宣言のトップで、そのクラスを導入しました:
列挙型のインポートからユニーク @Unique クラスB(列挙型): AA = 1 BB = 1は
結果を与えている:
とValueError:重複値は<列挙'B'>に見られる:BB - AA>