2014-04-17 56 views
0

我對Python很新,我不知道可用的東西。目前,我有這樣的一段代碼迅速把一些命名變量在一起,這樣我就可以在其他地方使用它們:是一種命名方式去靈活的容器?

def myfunction(): 
    props = namedtuple('props', '') 

    props.color = "green" 
    props.size = "large" 
    props.wheels = 4 
    props.roof = True 

    return props 

在這種情況下,namedtuple好的解決辦法?或者它可以更簡單?

+0

你實際上是使用'namedtuple'不正確。 '道具'是*班*。 –

+0

其實元組相當不靈活,至少是單個元素。 –

回答

3

namedtuple優秀工具生成固定大小的(不可變的)信息,就像元組,但爲了方便起見使用了命名屬性。

但是,您正在使用namedtuple類工廠不正確。 props類,您通常會使用這樣的:

Props = namedtuple('Props', 'color size wheels roof') 

def myfunction(): 
    props = Props(color="green", size="large", wheels=4, roof=True) 
    return props 

這使得props不變(最終用戶可以通過使用namedtuple._replace() method產生一個新的實例),並編入索引,以及。

您未遇到您的方法問題的唯一原因是您每次運行函數時都會創建一個新的類對象;您在其上設置的類屬性不會在實例之間共享,因爲不會創建任何實例。

如果你不想不可變對象,而不是用一本字典:

def myfunction(): 
    return { 
     "color": "green", 
     "size": "large", 
     "wheels": 4, 
     "roof": True 
    } 
1

如果你只是使用props來存儲數據,最簡單的辦法是使用dict:在dict

def myfunction(): 
    return {"color": "green", 
      "size": "large", 
      "wheels": 4, 
      "roof": True} 

元素隨後爲props["color"]訪問等等(一旦你存儲當然是一個名爲「道具」的變量的返回值)。

相關問題