首頁 > 後端開發 > Python教學 > 如何在 Python 中有效地表示枚舉?

如何在 Python 中有效地表示枚舉?

DDD
發布: 2024-12-13 09:30:14
原創
378 人瀏覽過

How Can I Effectively Represent Enums in Python?

在 Python 中表示枚舉

在 Python 3.4 及更高版本中,可以使用 Enum 類本機定義枚舉。要使用它,請為 3.4 之前的 Python 版本安裝 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'
登入後複製

要使用更進階的枚舉技術,請考慮使用 aenum 函式庫。

Python 3.4 之前版本的替代方法

在早期的 Python版本中,可以使用自訂來模擬枚舉函數:

def enum(**enums):
    return type('Enum', (), enums)
登入後複製

用法:

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)
登入後複製

用法:

Numbers = enum('ZERO', 'ONE', 'TWO')
print(Numbers.ZERO)  # Output: 0
print(Numbers.TWO)  # Output: 2
登入後複製

或者,使用Python 3.8 中的Typing.Literal或Typing_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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板