2015-04-22 55 views
0

我在決定如何構建我的類時遇到了一些困難。我已經是一個棒球運動員類和必要的屬性:Python:如何構建一個具有多個參數的類

  • 玩家ID(從DB的關鍵)
  • 位置
  • 對手
  • 約10或11統計(歷史)
  • 約10或11統計(預測)
  • 投手對決
  • 天氣
  • ...和一些更

有些事情要打破這一點:

1)把統計的字典

2)製作一個團隊課程,可以爲團隊中的所有參與者提供常見信息,例如天氣和投手匹配。

但是,在這之後我仍然有10個屬性。

看到這個(Class with too many parameters: better design strategy?)給了我一些想法,但不知道它們是否理想。

1)使用字典 - 但隨後就無法使用方法來計算統計數據(或必須使用單獨的函數)

2)使用ARGS/kwargs - 但是,從我可以收集,那些似乎是可變數量的參數,並且我的所有參數都是必需的。

3)分成更小的班級 - 我已經打破了一些,但不知道我是否可以進一步。

有沒有更好的方法來建立這個,而不是有一堆列出的參數的類?

+1

使用args/kwargs不僅適用於可變數量的參數。並且使用字典不會使您無法使用方法或計算統計信息。 – dbliss

回答

0

如果從數據庫設計的角度想一想,它可能會奇怪,有一個具有以下參數BaseballPlayer對象:

  • 位置
  • 對手
  • 約10或11統計(歷史)
  • 約10或11統計(預計)
  • 投手馬TChUP跟企業
  • 天氣

因爲有與特定BaseballPlayer,其保持相對固定,如姓名等相關聯的某些事情,但這些其它東西都是流體和暫時的。

如果您將此設計爲具有各種數據庫表格的應用程序,那麼這裏列出的每個事物都可能代表一個單獨的表格,並且這些表格與這些其他表格的關係可能是當前和前期的Team

因此,我可能會分解成更多的類,包括StatsClassTeam類(這可能是什麼Opponent真的是......)。

但這一切都取決於你想要做什麼。通常,當你向後彎曲以將數據塞進結構或者將數據塞回結構中時,可以重新設計設計以使工作更容易。

+0

是的,我打算把球隊內的任何東西都放入球隊類(對手,投手對決,天氣......),然後讓球隊對象成爲球員的屬性。在這之後這仍然很麻煩,但是我還沒有想過要把它進一步分解爲統計類。我想如果我要隔離這些,那麼我認爲這會讓Player類更清潔。 – user4496157

相關問題