存儲枚舉的 Pythonic 方式

編輯WSA

我有一個枚舉類站。(我正在使用 aenum,一個“擴展”python 枚舉的庫,並允許使用具有整數和字符串的枚舉)這個類 Station)存儲常量,帶有數字和字符串表示。一切都很好。

現在,我想存儲 Station 對象的常量列表。我正在做的事情有效,但感覺不對。(我對 python / 編程有點陌生。)有人對此有什麼建議嗎?謝謝你。

這是我的代碼:

from typing import List
from aenum import Enum
from abc import ABC


class Station(Enum):
    _init_ = 'value string'

    BASTILLE = 3, 'Bastille'
    LEDRU = 1, 'Ledru Rollin'
    REPU = 10, 'République'
    CHATELET = 2, 'Châtelet les Halles'
    OURCQ = 5, 'Ourcq'
    
    def __str__(self):
        return self.string

    @property
    def nb(self):
        return self.value


class StationEnsemble(ABC):
    name :str
    stations : List[Station]

    @property
    def station_nbs_list(self):
        return [st.nb for st in self.stations]


class RecentStations(StationEnsemble):
    stations = [Station.OURCQ,Station.LEDRU,Station.CHATELET]

class EastStations(StationEnsemble):
    stations=[Station.BASTILLE,Station.OURCQ,Station.CHATELET]
黑化

為您的列表使用多個類似乎很尷尬。為什麼不只編寫一個類並將特定列表作為其實例?這將使property工作(因為它需要在實例上查找)也讓您有機會填寫name您鍵入的提示但從未初始化屬性。

class StationEnsemble:
    def __init__(self, name: str, stations: List[Station]):
        self.name = name
        self.stations = stations

    @property
    def station_nbs_list(self):
        return [st.nb for st in self.stations]

RecentStations = StationsEnsemble("recent", [Station.OURCQ, Station.LEDRU, Station.CHATELET])
EastStations = StationsEnsemble("east", [Station.BASTILLE, Station.OURCQ, Station.CHATELET])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章