2012-09-17 99 views
4

在我看來,鼓勵使用字典來定義類和使用類。我應該什麼時候在課堂上使用字典,反之亦然?數據容器:class vs dictionary

例如,如果我想有一個人字典和每個人都有一個名字和其他屬性,兩種簡單的方法是:

  1. 創建人的字典。每個鍵都是人名,值將是一個人所有屬性的字典。

  2. 創建包含這些屬性,然後有Person本詞典類Person,有名稱的關鍵和Person對象的值。

這兩個解決方案似乎有效,實現的目標,但它仍然好像在Python字典將要走的路。這些實現是不同的,如果我想要來回切換,我可以進行許多更改,從基於類的實現轉移到基於字典的實現,反之亦然。

那麼我在交易什麼?

回答

3

字典是開始或試驗解決問題的方法的好方法。它們不能代替精心設計的課程。有時候,這是正確的'最終解決方案',也是處理'我只需要攜帶一些數據'需求的最有效方式。我發現有時候有時候會用字典開始,而且通常會寫一些函數來提供我正在處理的特定情況所需的額外行爲。在某些時候,我通常會發現,切換到使用班級而不是字典會更整潔。這通常取決於滿足當前需求所需的行爲的數量和複雜性。因爲在Python中定義和使用類很容易,所以我發現我很早就從「字典加函數」切換到類。 (我發現的一件事是,在很多情況下,'快速推出一個解決方案'的計劃需要自己的生活 - 而且它具有更高的生產力,可以擴展和重構真實的類,而不是大量的(AB)使用字典的代碼

2

除非你還想用數據封裝行爲,否則應該使用字典。一個類不僅用於存儲數據,還用於指定對該數據執行的操作。

+0

怎樣才能讓IDE在其成員上使用代碼完成的類的便利性呢? – Mav3rick

+2

@ Mav3rick你的IDE的功能應該對你的代碼沒有影響! –

+0

@JoranBeasley - 這正是我正要說...... – mgilson