Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Python sys.version\u info缺少要转换为dict的asdict()方法?_Python_Python Typing - Fatal编程技术网

为什么Python sys.version\u info缺少要转换为dict的asdict()方法?

为什么Python sys.version\u info缺少要转换为dict的asdict()方法?,python,python-typing,Python,Python Typing,sys.version\u info是否有一些独特之处,即它没有返回正确的名称双倍,并且没有\u asdict功能 sss = sys.version_info._asdict AttributeError: 'sys.version_info' object has no attribute '_asdict' [Finished in 0.7s with exit code 1] 很有趣,所以我实际上挖得更深。正如评论中提到的,sys.version\u info是一个定制的元组子类,不要

sys.version\u info是否有一些独特之处,即它没有返回正确的名称双倍,并且没有
\u asdict
功能

sss = sys.version_info._asdict
AttributeError: 'sys.version_info' object has no attribute '_asdict'
[Finished in 0.7s with exit code 1]

很有趣,所以我实际上挖得更深。正如评论中提到的,
sys.version\u info
是一个定制的元组子类,不要被
docstring
混淆,有趣的是,它实际上表示它是一个命名元组,尽管它们可能指的是
print
字符串格式

print(sys.version_info.__doc__)
sys.version_info

Version information as a named tuple.
您还将意识到,如果您运行返回其方法的
dir(sys.version\u info)
\u asdict
dict
不是它的一部分,因此在没有
\u asdict
作为属性的情况下返回错误

根据文件本身

包含版本号的五个组件的元组:major, 次要、微量、释放级和系列。除releaselevel之外的所有值 是整数;发布级别为“alpha”、“beta”、“候选者”或 “决赛”。对应于Python版本的version\u info值 2.0是(2,0,0,'最终',0)。组件也可以通过名称访问,因此sys.version\u info[0]相当于sys.version\u info.major 等等

由于组件是静态的,并且如文档中所述,因此始终可以通过名称或其固定索引访问组件

如果你真的想要一本字典:

comp = 'major minor micro releaselevel serial'.split()
svi_dic ={k:v for (k,v) in zip(comp,sys.version_info)}
svi_dic

{'major': 3, 'minor': 6, 'micro': 6, 'releaselevel': 'final', 'serial': 0}

它似乎是多余的,因为您也可以轻松地执行
sys.version\u info.major
等操作。希望这有助于您理解。

很有趣,所以我实际上更深入了。正如评论中提到的,
sys.version\u info
是一个定制的元组子类,不要被
docstring
混淆,有趣的是,它实际上表示它是一个命名元组,尽管它们可能指的是
print
字符串格式

print(sys.version_info.__doc__)
sys.version_info

Version information as a named tuple.
您还将意识到,如果您运行返回其方法的
dir(sys.version\u info)
\u asdict
dict
不是它的一部分,因此在没有
\u asdict
作为属性的情况下返回错误

根据文件本身

包含版本号的五个组件的元组:major, 次要、微量、释放级和系列。除releaselevel之外的所有值 是整数;发布级别为“alpha”、“beta”、“候选者”或 “决赛”。对应于Python版本的version\u info值 2.0是(2,0,0,'最终',0)。组件也可以通过名称访问,因此sys.version\u info[0]相当于sys.version\u info.major 等等

由于组件是静态的,并且如文档中所述,因此始终可以通过名称或其固定索引访问组件

如果你真的想要一本字典:

comp = 'major minor micro releaselevel serial'.split()
svi_dic ={k:v for (k,v) in zip(comp,sys.version_info)}
svi_dic

{'major': 3, 'minor': 6, 'micro': 6, 'releaselevel': 'final', 'serial': 0}

它似乎是多余的,因为您也可以轻松地执行
sys.version\u info.major
等操作。希望这能帮助您理解。

版本信息
不是很好的
命名倍数(尽管有docstring)

(下面假设cpython实现细节,它可能适用于也可能不适用于替代实现,例如
pypy
/
jython

它是用C语言实现的,C语言是一种
StructSequence
。从:

从文件中可以看出:

namedtuple()对象的C等价物,即其项也可以通过属性访问的序列。要创建结构序列,首先必须创建特定的结构序列类型


也就是说,它类似于名为tuple的
,但不同。值得注意的是,它似乎缺少了
\u replace
\u asdict
\u fields
,以及
\u fields\u defaults
API。

版本信息
并不是一个很好的
命名倍数
(尽管有docstring)

(下面假设cpython实现细节,它可能适用于也可能不适用于替代实现,例如
pypy
/
jython

它是用C语言实现的,C语言是一种
StructSequence
。从:

从文件中可以看出:

namedtuple()对象的C等价物,即其项也可以通过属性访问的序列。要创建结构序列,首先必须创建特定的结构序列类型


也就是说,它类似于名为tuple的
,但不同。值得注意的是,它似乎缺少了
\u replace
\u asdict
\u fields
,以及
\u fields\u defaults
API。

@juanpa.arrivillaga哇!很抱歉,它不是名为tuple的
,您是否尝试检查
类型(sys.version\u info)
?无论如何,它是一个定制的
tuple
子类,不是使用
namedtuple
类工厂生成的。@juanpa.arrivillaga哇!很抱歉,它不是名为tuple的
,您是否尝试检查
类型(sys.version\u info)
?无论如何,它是一个定制的
tuple
子类,不是使用
namedtuple
类工厂生成的。