在閱讀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