簡體   English   中英

為枚舉創建值查找列表

[英]Create a value lookup list for an enum

我想在Enum添加一個查找列表作為靜態變量。 我能做的最好的就是

class Seed(IntEnum):
    HEARTS = 0
    DIAMONDS = 1
    SPADES = 2
    CLUBS = 3
    @staticmethod
    def value_list():
        Seed.list = [s.value for s in Seed]

然后在代碼中我必須做

Seed.value_list()

初始化變量list ,這種方法不是靜態的,但對於所有實例都是相同的。 那我可以用

Seed.list

有沒有辦法做到這一點?

您可以編寫一個類裝飾器

def values_list(enum_cls):
    # create the values_list attribute and then return the class
    enum_cls.values_list = [member.value for member in enum_cls]
    return enum_cls

@values_list
class Seed(IntEnum):
    HEARTS = 0
    DIAMONDS = 1
    SPADES = 2
    CLUBS = 3

print(Seed.values_list)
# [0, 1, 2, 3]

您需要返回值列表:

from enum import IntEnum


class Seed(IntEnum):
    HEARTS = 0
    DIAMONDS = 1
    SPADES = 2
    CLUBS = 3

    @classmethod
    def values(cls):
        return [s.value for s in cls]

if __name__ == '__main__':

    print(Seed.values())

輸出:

[0, 1, 2, 3]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM