19列挙

列挙のコンセプト

列挙クラスです

モジュールの列挙をインポートする列挙必要性を定義します。

列挙型のインポート列挙型から

  

列挙型の定義

クラスの色(列挙型):
    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>

  

 

おすすめ

転載: www.cnblogs.com/scopicat/p/11778379.html