ホームページ >バックエンド開発 >Python チュートリアル >Python で列挙型を効果的に表現するにはどうすればよいですか?

Python で列挙型を効果的に表現するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-13 09:30:14381ブラウズ

How Can I Effectively Represent Enums in Python?

Python での列挙型の表現

Python 3.4 以降では、Enum クラスを使用して列挙型をネイティブに定義できます。これを使用するには、Python バージョン 3.4 より前の enum34 パッケージをインストールします。

from enum import Enum

Animal = Enum('Animal', 'ant bee cat dog')

print(Animal.ant)  # Output: <Animal.ant: 1>
print(Animal['ant'])  # Output: <Animal.ant: 1>
print(Animal.ant.name)  # Output: 'ant'

より高度な enum テクニックについては、aenum ライブラリの使用を検討してください。

Python 3.4 より前の代替アプローチ

以前の Python バージョンでは、カスタム メソッドを使用して列挙型をエミュレートできます。 function:

def enum(**enums):
    return type('Enum', (), enums)

Usage:

Numbers = enum(ONE=1, TWO=2, THREE='three')
print(Numbers.ONE)  # Output: 1
print(Numbers.THREE)  # Output: 'three'

次の自動列挙もサポートできます:

def enum(*sequential, **named):
    enums = dict(zip(sequential, range(len(sequential))), **named)
    return type('Enum', (), enums)

Usage:

Numbers = enum('ZERO', 'ONE', 'TWO')
print(Numbers.ZERO)  # Output: 0
print(Numbers.TWO)  # Output: 2

あるいは、Python 3.8 の testing.Literal を使用するか、以前のバージョンでは列挙型を定義するための testing_extensions.Literal:

from typing import Literal  # Python >= 3.8
from typing_extensions import Literal  # Python 2.7, 3.4-3.7

Animal = Literal['ant', 'bee', 'cat', 'dog']

def hello_animal(animal: Animal):
    print(f"hello {animal}")

以上がPython で列挙型を効果的に表現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。