为什么我不能读';typename';在Python中创建namedtuple对象之后
此查询进一步参考 因此,我尝试执行以下代码:为什么我不能读';typename';在Python中创建namedtuple对象之后,python,python-3.x,namedtuple,Python,Python 3.x,Namedtuple,此查询进一步参考 因此,我尝试执行以下代码: from collections import * tp = namedtuple('emp', 'eid enames mob') print(tp) print(emp) 我可以执行print(tp),生成的输出是 但当我尝试执行print(emp)时,它会生成以下异常: Traceback (most recent call last): File "a.py", line 5, in <module> print(
from collections import *
tp = namedtuple('emp', 'eid enames mob')
print(tp)
print(emp)
我可以执行print(tp)
,生成的输出是
但当我尝试执行print(emp)
时,它会生成以下异常:
Traceback (most recent call last):
File "a.py", line 5, in <module>
print(emp)
NameError: name 'emp' is not defined
回溯(最近一次呼叫最后一次):
文件“a.py”,第5行,在
打印(emp)
NameError:未定义名称“emp”
原因是什么。创建类emp
。但我不知道如何直接访问它。或者我不能
因此,基本上,我可以创建tp
的实例作为tp()
,但不能以相同的方式创建emp
的实例。为什么?选项1:分配给返回的类型时,只需重复类型名称即可
tp = emp = namedtuple('emp', 'eid enames mob')
选项2:使用声明式样式而不是函数式API
from typing import NamedTuple
class emp(NamedTuple):
eid: str
enames: str
mob: str
选项1:分配给返回的类型时,只需重复类型名称即可
tp = emp = namedtuple('emp', 'eid enames mob')
选项2:使用声明式样式而不是函数式API
from typing import NamedTuple
class emp(NamedTuple):
eid: str
enames: str
mob: str
如果我不能使用,我想知道
emp
的目的是什么。我对问题进行了编辑以反映相同的问题。它被设置为类型的名称。检查tp.\uuuuu name\uuuuu您是对的,tp.\uuuuuu name\uuuuuu
是否显示emp
。事实上,如果我创建一个tp
的对象,type(myobj)
将type显示为emp
。但是我不能使用emp
创建对象。为什么会这样?因为emp这个名字在你的范围内没有绑定。您已将返回的类型分配给其他名称。如果无法使用,我想知道emp
的用途。我对问题进行了编辑以反映相同的问题。它被设置为类型的名称。检查tp.\uuuuu name\uuuuu您是对的,tp.\uuuuuu name\uuuuuu
是否显示emp
。事实上,如果我创建一个tp
的对象,type(myobj)
将type显示为emp
。但是我不能使用emp
创建对象。为什么会这样?因为emp这个名字在你的范围内没有绑定。您已将返回的类型分配给其他名称。