考虑:
class Item:
def __init__(self, a, b):
self.a = a
self.b = b
class Items:
GREEN = Item('a', 'b')
BLUE = Item('c', 'd')
有没有办法使这种简单枚举的思想适应这种情况?(请参阅此问题)理想情况下,就像在Java中一样,我想将它们全部塞入一个类中。
Java模型:
enum EnumWithAttrs {
GREEN("a", "b"),
BLUE("c", "d");
EnumWithAttrs(String a, String b) {
this.a = a;
this.b = b;
}
private String a;
private String b;
/* accessors and other java noise */
}
Python
3.4具有新的Enum数据类型(已反向移植为,enum34
并增强为aenum
1)。无论enum34
和aenum
2轻松支持您的使用情况:
[ aenum
py2 / 3]
import aenum
class EnumWithAttrs(aenum.AutoNumberEnum):
_init_ = 'a b'
GREEN = 'a', 'b'
BLUE = 'c', 'd'
[ enum34
py2 / 3或stdlib enum
3.4+]
import enum
class EnumWithAttrs(enum.Enum):
def __new__(cls, *args, **kwds):
value = len(cls.__members__) + 1
obj = object.__new__(cls)
obj._value_ = value
return obj
def __init__(self, a, b):
self.a = a
self.b = b
GREEN = 'a', 'b'
BLUE = 'c', 'd'
并在使用中:
--> EnumWithAttrs.BLUE
<EnumWithAttrs.BLUE: 1>
--> EnumWithAttrs.BLUE.a
'c'
1披露:我是Python
stdlibEnum
,enum34
backport和Advanced
Enumeration(aenum
)
库的作者。
2 aenum
还支持NamedConstants
和基于元类NamedTuples
。
我想创建一个带有 Java 枚举(enum)的 UML 图,它具有一个或多个属性,但我对如何做到这一点感到困惑。 例如,一个枚举可以像这样声明: 没有属性,很容易: 但是如何优雅地用属性建模呢?应该是这样吗? 我在这里只找到了这个示例,但它使用String类属性作为枚举名称。我认为,这应该不同于的用法,而不指定枚举名称数据类型。
问题内容: 我是Swift的新手,只是在文档中遇到了这一点: 计算的属性由类,结构和枚举提供。存储的属性仅由类和结构提供。 这是为什么?枚举的关联值是否像存储属性一样工作?似乎他们最初存储了属性- 问题答案: 确实具有存储的 类型 属性-即属性。他们没有存储的 实例 属性。我不知道是否存在技术上的原因为什么存储的实例属性不可用于。如果您想要“为什么”的技术答案,则可能需要在开发论坛上提问。 在您的
我想知道是否有什么方法可以使属性值动态。类似于这样: 感谢您的反馈。在我的例子中,属性值是系统特定的,应该在测试运行时生成。
我已经在stackoverflow和网络上寻找解决方案。我没有见过有效的解决方案,因为可能没有一个帖子完全符合我的用例,它包含文件中的列表和对象结构。 这里有一个例子作为yaml 这是与属性文件相同的示例 我希望能够向我的应用程序提供 teddy.yml 或 teddy.properties 文件以进行配置。 这是我的课程: 我已经尝试了这种设置,使用环境来尝试访问属性,删除前缀,声明一个“Pro
这就是所谓的扩展枚举。我知道它管用--我以前试过并用过很多次。我知道如果这是您应该对枚举做的事情,可能会有讨论--我认为是的,因为您仍然有您定义的常量,但它们只是包含了一些更多的信息(仍然是常量)。(另外:我看过这个例子,java枚举上的自定义字段没有序列化,我认为它们也遵循了我在如何生成枚举上的自定义属性方面的思路)。 现在,我究竟应该如何从Eclipse EMF模型生成这样的东西呢?我甚至不知