存储枚举的 Pythonic 方式
Pythonic way of storing Enums
我有一个枚举 class 站。
(我正在使用 aenum,一个“扩展”python 枚举的库,并允许使用同时具有整数和字符串的枚举)
这个 class 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]
为您的列表使用多个 classes 似乎很尴尬。为什么不只写一个 class 并使特定列表成为其实例?这将使 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])
我有一个枚举 class 站。 (我正在使用 aenum,一个“扩展”python 枚举的库,并允许使用同时具有整数和字符串的枚举) 这个 class 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]
为您的列表使用多个 classes 似乎很尴尬。为什么不只写一个 class 并使特定列表成为其实例?这将使 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])