2014-03-31 61 views
21
from collections import namedtuple 

Point=namedtupe('whatsmypurpose',['x','y']) 
p=Point(11,22) 
print(p) 

輸出:相關的namedtuple類型名的

whatsmypurpose(x=11,y=22) 

有什麼意義/使用'whatsmypurpose'

+2

入住這裏:http://stackoverflow.com/questions/2970608/what-are-named-tuples-in-python 「這becames更具可讀性」 - 所以,它的可讀性。還有更多:「你應該在任何你認爲使用對象符號的地方使用命名的元組而不是元組,這會使得你的代碼變得更加pythonic並且更容易被讀取。」 –

+1

[在python中使用類的類型名稱](http://stackoverflow.com/questions/10482512/use-of-class-typenames-in-python) – b4hand

回答

6

namedtuple()是元組的工廠函數。這裏,whatsmypurpose是類型名稱。當你創建一個命名的元組時,一個具有這個名字的類(whatsmypurpose)被內部創建。

您可以通過使用詳細參數像注意到這一點:

Point=namedtuple('whatsmypurpose',['x','y'], verbose=True) 

您也可以嘗試類型(P)來驗證這一點。

+0

3.3也添加了屬性'_source',萬一你想要「打印」或「執行」定義。 – eryksun

+0

我似乎無法訪問該課程。即,上面的whatsmypurpose()沒有被定義。該類實際上是在某處定義的還是僅用於顯示目的的typename? – Gadi

+0

@Gadi Point是上例中稱爲'whatsmypurpose'的類的引用(變量)。所以通常類名('Point .__ name__')用於顯示目的(嘗試'print(Point(1,2))')。 – zvyn

4

'whatsmypurpose'給出了它的類型名稱的新子類。從文檔:

collections.namedtuple(類型名稱,FIELD_NAMES,詳細=假,更名= FALSE)
返回名爲類型名稱一個新的元組的子類。

下面是一個例子:

>>> from collections import namedtuple 
>>> Foo = namedtuple('Foo', ['a', 'b']) 
>>> type(Foo) 
<class 'type'> 
>>> a = Foo(a = 1, b = 2) 
>>> a 
Foo(a=1, b=2) 
>>> Foo = namedtuple('whatsmypurpose', ['a', 'b']) 
>>> a = Foo(a = 1, b = 2) 
>>> a 
whatsmypurpose(a=1, b=2) 
>>>