ホームページ > バックエンド開発 > Python チュートリアル > Python 列挙型クラスの定義と関数 (分析例)

Python 列挙型クラスの定義と関数 (分析例)

乌拉乌拉~
リリース: 2018-08-23 13:37:59
オリジナル
3745 人が閲覧しました

次の記事では、Python の列挙クラスとは何かについて学びましょう。 Python 列挙クラス とは何か、Python プログラミングにおいて Python 列挙クラスがどのような役割を果たすことができるかを理解します。

列挙型の定義

まず、列挙型を定義するために、enum モジュールをインポートします。
列挙定義では class キーワードを使用し、Enum クラスを継承します。

注:

列挙型を定義する場合、メンバー名を繰り返すことはできません。

デフォルトでは、異なるメンバー値が同じであることが許可されます。ただし、同じ値を持つ 2 つのメンバーの場合、2 番目のメンバーの名前は最初のメンバーの別名とみなされます。

列挙型内に同じ値を持つメンバーがある場合、列挙型メンバーを値で取得するときに、2 番目のメンバーの名前は最初のメンバーの別名とみなされます。 、最初のメンバーのみを取得します

列挙型の定義を制限する場合は、同じ値を持つメンバーを定義することはできません。デコレータ @unique を使用できます [一意のモジュールをインポートする]

定数を定義する必要がある場合、1 つの方法は、月などの整数で定数を定義するために大文字の変数を使用することです。

JAN = 1
FEB = 2
MAR = 3
...
NOV = 11
DEC = 12
ログイン後にコピー

利点は単純なことですが、欠点は型が int で変数であることです。

より良いアプローチは、そのような列挙型のクラス型を定義し、各定数がクラスの一意のインスタンスになることです。 Python は、この関数を実装するための Enum クラスを提供します:

from enum import Enum
Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
ログイン後にコピー

このようにして、Month 型列挙クラスを取得します。Month.Jan を直接使用して、定数を参照したり、そのすべてのメンバーを列挙したりできます:

for name, member in Month.__members__.items():
    print(name, '=>', member, ',', member.value)
ログイン後にコピー

value 属性はメンバーに自動的に割り当てられる int 定数で、デフォルトでは 1 から数えられます。

列挙型をより正確に制御する必要がある場合は、Enum からカスタム クラスを派生できます。

from enum import Enum, unique

@unique
class Weekday(Enum):
    Sun = 0 # Sun的value被设定为0
    Mon = 1
    Tue = 2
    Wed = 3
    Thu = 4
    Fri = 5
    Sat = 6
ログイン後にコピー

@独自のデコレータは、重複した値がないことを確認するのに役立ちます。

これらの列挙型にアクセスするには、いくつかの方法があります。

>>> day1 = Weekday.Mon
>>> print(day1)
Weekday.Mon
>>> print(Weekday.Tue)
Weekday.Tue
>>> print(Weekday['Tue'])
Weekday.Tue
>>> print(Weekday.Tue.value)
2
>>> print(day1 == Weekday.Mon)
True
>>> print(day1 == Weekday.Tue)
False
>>> print(Weekday(1))
Weekday.Mon
>>> print(day1 == Weekday(1))
True
>>> Weekday(7)
Traceback (most recent call last):
  ...
ValueError: 7 is not a valid Weekday
>>> for name, member in Weekday.__members__.items():
...     print(name, '=>', member)
...
Sun => Weekday.Sun
Mon => Weekday.Mon
Tue => Weekday.Tue
Wed => Weekday.Wed
Thu => Weekday.Thu
Fri => Weekday.Fri
Sat => Weekday.Sat
ログイン後にコピー

列挙定数はメンバー名によって参照できるか、列挙定数はメンバー名に基づいて直接取得できることがわかります。値の値。

以上がこの記事で説明する内容の全てですが、この記事では主にpython列挙クラスの関連知識を紹介しますので、上記の内容を理解するために活用していただければ幸いです。この記事で説明したことがあなたのお役に立ち、Python の学習が容易になることを願っています。

関連知識の詳細については、php 中国語 Web サイトの Python チュートリアル 列を参照してください。

以上がPython 列挙型クラスの定義と関数 (分析例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート