性感专属课程

  • 本文关键字: python voluptuous
  • 更新时间 :
  • 英文 :


我使用的是淫荡的0.9.2,我有排他性类的问题。我需要的是,如果没有键,它应该给出一个错误。然而,这对性感来说是可以的。这是一个臭虫的淫荡吗?如果不是,我该如何写一个脚本呢?

为了澄清我的问题,假设我们建立了这样一个模式:

schema = Schema({Exclusive('a', 'z'): int, Exclusive('b', 'z'): int, 'c': int}, required=True)

我需要一个且只能给出排除组中的一个键。但是当我用{'c': 5}测试时,即使我没有给出ab,它似乎也是有效的。我不知道如何使它特别适用于这种情况

根据文档,Exclusive继承自Optional,这意味着ab在模式中是可选的;这就是为什么{'c': 5}是一个有效的输入。要解决这个问题,您需要根据需要显式地指定它们:

from voluptuous import Schema, Exclusive, Required
schema = Schema({Required(Exclusive('a', 'z')): int, Required(Exclusive('b', 'z')): int, 'c': int}, required=True)

这里的一个技巧是使用两个需要同时验证的不同模式:

from voluptuous import All, Any, Exclusive, Required                                                                                                                         
schema = All(                                                                                                                                                                
    {                                                                                                                                                                        
        Exclusive('a', 'z'): int,                                                                                                                                            
        Exclusive('b', 'z'): int,                                                                                                                                            
        Required('c'): int,                                                                                                                                                  
    },                                                                                                                                                                       
    {                                                                                                                                                                        
        Required(Any('a', 'b')): int,                                                                                                                                        
        Required('c'): int,                                                                                                                                                  
    },                                                                                                                                                                       
)

ab同时存在时,第一个模式验证失败,当ab都不存在时,第二个模式验证失败。因此,ab必须存在。

相关内容

  • 没有找到相关文章

最新更新