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

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

DDD
DDDオリジナル
2025-01-04 20:43:41335ブラウズ

How Can I Represent Enums in Python?

Python での列挙型の表現

列挙型は、現代のプログラミング手法の重要な側面であり、有限および固定の値セットの表現を可能にします。 Python では、複数のアプローチを使用して列挙型を表すことができ、開発者に柔軟性とさまざまな Python バージョンとの互換性を提供します。

標準ライブラリ列挙型 (Python 3.4 )

の出現によりPython 3.4 では、標準化された enum 実装が導入されました。 PEP 435 を参照すると、組み込みの enum モジュール内で Enum クラスを利用できます。このアプローチは、簡潔さと使いやすさという Python の哲学と一致しています。

例:

from enum import Enum

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

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

サードパーティ ライブラリ

3.4 より前の Python バージョンの場合、サードパーティのライブラリが信頼性の高いソリューションを提供します。列挙型の実装。一般的なオプションは次の 2 つです:

  • enum34: Python 3.4 Enum クラスを古いバージョンにバックポートし、互換性のあるインターフェイスを提供します。
  • aenum: 名前を自動的に解決するなどの追加機能を備えた高度な enum ライブラリ

enum34 を使用した例:

from enum34 import Enum

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

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

手動 Enum 実装 (Python 3.4 以前)

Python 3.4 に列挙型が含まれる前は、開発者はカスタム アプローチを採用しました。一般的な方法の 1 つは、@property デコレータを使用してクラスを作成して enum 値を定義する方法でした。

例:

class Animal:
    ant = 1
    bee = 2
    cat = 3
    dog = 4

print(Animal.ant)  # Output: 1
print(Animal.cat.name)  # Error: 'int' object has no attribute 'name'

このアプローチには、標準化された enum の安全性と利便性が欠けています。ただし、下位互換性のためのオプションのままです。

エイリアスの入力 (Python 3.8) )

最近導入された型指定エイリアスは、列挙型の動作の代替手段を提供します。リテラル型を使用すると、一連の固定値を指定できます。

例:

from typing import Literal

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

ただし、このアプローチには、従来の列挙型の堅牢な機能が欠けています。名前から値への自動解決。

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

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