我在谷歌上搜索没有成功,所以我想知道isinstance
与yaml ScalarNode、SequenceNode和MappingNode的结合是什么意思?
(我已经知道什么是isinstance
)
比如说
if isinstance(v,yaml.ScalarNode):
#do something
elif isinstance(v,yaml.SequenceNode):
#something else
elif isinstance(v, yaml.MappingNode):
#another thing
节点类型是YAML的表示数据结构的一部分。YAML将其(反)序列化管道定义如下:
表示法是一个潜在的循环节点图。在其中,锚定和别名已被解析。在PyYAML中,通常使用此数据结构的子图来实现生成本机对象的自定义构造函数和重输入,如图中的箭头所示
ScalarNode是表示YAML源或输出中单个标量的节点。单个标量可以是纯标量(例如
foo
)、带引号的标量('foo'
或"foo"
)或块标量(从|
或>
开始)。标量内容(带有转义序列、换行符和缩进)已在字段.value
中作为字符串提供。对于默认构造为非字符串的值也是如此。例如,true
默认情况下将生成一个布尔值,但作为ScalarNode,它将值"true"
作为字符串包含SequenceNode是表示序列的节点。
SequenceNode
的value
字段包含与序列中的项目相对应的节点列表映射节点是表示映射的节点。{}的{}字段包含一个元组列表,其中每个元组由键节点和值节点组成
所有节点都有一个字段
tag
,其中包含节点的已解析标记。i、 e.具有值true
的ScalarNode
通常具有标签yaml.org,2002:bool
。解析的标记取决于所使用的加载程序,例如,如果使用PyYAML的BaseLoader
,true
将解析为一个普通字符串,即yaml.org,2002:str
。在任何情况下,如果节点上有显式标记(例如!!str
),则该标记将位于tag
字段中回到问题上来,这类代码通常在自定义构造函数中使用。它们获取一个节点作为输入,并生成本机值并返回它。通常,自定义构造函数需要特定类型的节点,但如果您希望进行正确的错误报告,您仍然需要检查是否实际获得了所需的节点类型。为此,请使用您发布的代码
相关问题 更多 >
编程相关推荐