Python 如何在Enthught traits模块中限制浮点特征中的值?

Python 如何在Enthught traits模块中限制浮点特征中的值?,python,validation,enthought,traits,Python,Validation,Enthought,Traits,我对Enthinktraits模块有点陌生。我想指定一个只允许几个浮点值的特性。不幸的是,我不能使用Enum,因为它破坏了我正在处理的代码库。如何指定哪些值对浮点值有效?我是否必须创建另一个从Float派生的类,并使用重载的validate?是的,traits文档指示您应该对Floattrait进行子类化,并添加自定义验证代码 请参阅关于的部分。我还要看看Enum实现的源代码 谢谢!在重新考虑之后,我认为子类化也会破坏现有的代码,所以我现在将忽略这些约束,但我会记住这个答案。如果这个答案对你有用

我对Enthink
traits
模块有点陌生。我想指定一个只允许几个浮点值的特性。不幸的是,我不能使用
Enum
,因为它破坏了我正在处理的代码库。如何指定哪些值对
浮点值有效?我是否必须创建另一个从
Float
派生的类,并使用重载的
validate

是的,
traits
文档指示您应该对
Float
trait进行子类化,并添加自定义验证代码


请参阅关于的部分。我还要看看
Enum
实现的源代码

谢谢!在重新考虑之后,我认为子类化也会破坏现有的代码,所以我现在将忽略这些约束,但我会记住这个答案。如果这个答案对你有用,你会接受还是投票?另外,我很想知道如果使用
Enum
Float
子类,代码是如何中断的?在我看来,
Enum
应该非常符合您的规范。答案已被接受。我认为代码可能会中断,因为对象存储在数据库中。因此,许多操作取决于每个特征的类型
is_trait_type
可能会将子类识别为
Float
,但我不确定它是否被一致使用(它是一个原型),并且
is_trait_type
对某些类型不起作用(请参阅)。对于
Enum
,它会中断,因为我们将值存储为字符串(我们没有意识到
traits
Enum
可以包含异构值)。然后,我可能更喜欢在存储/验证之前,将值转换为浮点数的子类化
Enum
。不管怎样,如果我能帮上忙,我很高兴。