在阅读fmark
的问题的答案What are "named tuples" in Python?我看到,鉴于那里的例子有相同的名称和参考,即这个词Point
在下面的语句中出现两次:
命名元组的名称和引用可以不同吗?
Point = namedtuple('Point', 'x y')
所以我去了原始参考:
https://docs.python.org/2/library/collections.html#collections.namedtuple
在这里,我也发现了两个例子:
EmployeeRecord = namedtuple('EmployeeRecord', 'name, age, title, department, paygrade')
Color = namedtuple('Color', 'red green blue')
理想情况下,Python中不重复单词。比如整条生产线(为的Point
例子)可以被替代如下:
namedtuple('Point', 'x y')
OR
Point = namedtuple('x y')
当然,这是假设命名元组必须具有相同的名称和参考。所以我的问题是:什么时候它是可取的(如果完全允许的话)一个命名的元组应该有不同的名称和引用?我还没有碰到一个例子。
'namedtuple('Point'...)'创建一个名为'Point'的类,但是不将其分配给某个标识符,您只能使用它一次。 'point1 = namedtuple('Point','x y')(1,0)','type(point1)'是'。使用与类名相匹配的标识符是很方便的,但它不是必需的,例如, 'Vertex = namedtuple('Point'...)'。一个类只是python中的另一个对象,每当你为类名指定一个不同的标识符时,你就会使用一个不同的名字,例如'class Point:... Vertex = Point' –
AChampion
2015-03-31 02:04:57
在我看来,'namedtuple'模块是一个可怕的混乱,本来应该是用metaclasses编写的。它仍然不完全清楚[为什么它不是](http://stackoverflow.com/questions/28184531),但如果它已经,你可以选择使用名称元组的类定义,指定一个元类,不需要重复类名。 – 2015-03-31 03:41:21