一個namedtuple當collections.namedtuple()構造函數的第一個參數,第一個參數是你要創建的類型的名稱,但據我可以說,除了診斷信息之外,它是無關緊要的。爲什麼你必須提供類型名作爲建立在Python
from collections import namedtuple
Point = namedtuple('Point', 'x y')
p = Point(1,2) # works fine, creates Point(x=1, y=2)
Point = namedtuple('blah', 'x y')
p = Point(2,3) # works fine, creates blah(x=1,y=2)
這只是一個必要的項目,程序員應該用於診斷目的基本保持一致,因爲那裏會是沒有辦法Python來學習你分配namedtuple給變量的名字嗎?似乎很容易出錯,但我可以看到它是如何有必要的。只是想知道是否有任何其他原因或不匹配這兩個名字的影響。
「再也不談論CustomType」。或者,就此而言,'del CustomType'。很容易忘記Python中的def和class在它們創建的對象的名稱(即函數或類)和它們分配給它的屬性/變量的名稱之間沒有建立任何固有連接。他們使用兩個相同的名稱,'collections.namedtuple'不能這樣做,因爲它只是一個函數調用,而不是內置的語言,所以它不能「看到」賦值。事實上,有可能不是一個任務,你可以只寫'namedtuple(「富」,「X」)(1)' –
這也是值得比較'namedtuple'到type'的'3個參數的形式,這也需要作爲第一個參數創建的類的名稱。 ('namedtuple'可能會被重新實現爲使用'type',事實上,而不是執行一個類聲明。) – chepner
有人可能會認爲使用'type'會更糟糕,因爲無法創建['' _source'](https://docs.python.org/3/library/collections.html#collections.somenamedtuple._source)作爲namedtuple。 – Navith