Python文档说:
collections.namedtuple(typename, field_names[, verbose=False][, rename=False])
Returns a new tuple subclass named typename.
Run Code Online (Sandbox Code Playgroud)
它举了一个例子
>>>Point = namedtuple('Point',...
在我能找到的所有例子中,返回namedtuple和参数typename的拼写是相同的.
试验,似乎论证无关紧要:
>>>Class = collections.namedtuple('Junk', 'field')
>>>obj = Class(field=1)
>>>print obj.field
1
Run Code Online (Sandbox Code Playgroud)
有什么区别?typename论证如何重要?
执行以下代码时:
Bar = collections.namedtuple('Foo', 'field')
Run Code Online (Sandbox Code Playgroud)
你是:
Foo;Bar.该代码相当于:
class Foo:
...
Bar = Foo
del Foo
Run Code Online (Sandbox Code Playgroud)
即使您将类分配给具有不同名称的变量,Foo仍将是"官方"名称,即:Bar.__name__仍将是'Foo'.
打印类或实例时,您会看到区别:
>>> Bar = collections.namedtuple('Foo', 'field')
>>> obj = Bar(field=1)
>>> obj
Foo(field=1)
Run Code Online (Sandbox Code Playgroud)
你可能会问为什么namedtuple需要类型名称,因为它是多余的(按照惯例).好吧,在分配变量之前namedtuple构建类型,因此它无法推断类型名称,需要明确告知它.(或者更好:它可以通过检查调用者的代码推断出名称,但这是hackish并且不适用于非传统情况.)
| 归档时间: |
|
| 查看次数: |
405 次 |
| 最近记录: |