我使用Enum常量进行存储,但我面临这样一个事实:我的常量总体上类型相似,但需要在不同的类中分开。我是这样写代码的,但是有没有更简洁的解决方案呢?
from enum import Enum
class DefaultInjectorConstant(Enum):
"""Класс хранящий все константы связанные с расчетом форсунок"""
class DefaultJetInjector(Enum):
"""Стандартные значение констант струйной """
LAMINAR = 2000
TURBULENT = 10_000
class DefaultCentrifugalInjector(Enum):
"""Стандартные значение констант центробежной форсунки"""
RIGHT_ANGLE = 90
TL;DR:最后一段。
它有
Enum一个相当具体的 API,与常规的 Python 类型不同。我不会详细说明,我只是澄清一下,按原样编写的代码将无法按预期工作。Enum没有被初始化为对象,它就像一个“自身的实例”,它没有通常的类属性/实例属性的划分。而且它的语法与基本语法有冲突。这样做的目的是为了在类名右侧的点之后它始终是一个 Enum 属性,并且它以特殊的方式工作。这根本不是我们对嵌套类的期望,嵌套类也用点表示。嵌套类和属性应该表现不同,但看起来相同。但这在技术上和逻辑上都很困难。因此,这种可能性在概念上并未包含在 Enum 中,尽管它以某种方式起作用。在 Python 3.13 中,如果不显式使用装饰器,它将停止:
我们的代码至少应该如下所示:
而且,如果我们直接访问嵌套类属性,我们会得到一个错误。
这就是一切的运作方式:
但这种记录形式直接与简洁的目标相矛盾。
有哪些选择?有人写道 Homen:将常量分配到模块中。你也可以将Enums分成模块,那么它会是这样的:
但如果你想要嵌套类,那么就不要从 Enum 继承父类。
您可以创建一个文件
my_constants.py并将所有常量放入其中,并按照命名规则命名它们,例如:由于扁平结构,这种方法将简化维护和创建常量,所有内容都在一个文件中,并且有顺序。
但是你可以立即在项目中实现更复杂的结构,当常量确实很多时,100-1000,就需要它,想想你是否需要这样的解决方案,尤其是在开始的时候。这是一个例子:
在这种情况下,对常量的访问将是: