Python:如何构造具有许多参数的类

时间:2015-04-22 22:09:36

标签: python class parameters

我在决定如何组建班级时遇到了一些麻烦。我所拥有的是棒球运动员课程和必要的属性:

  • 玩家ID(来自数据库的密钥)
  • 姓氏
  • 名字
  • 团队
  • 职位
  • 对手
  • 约10或11个统计数据(历史数据)
  • 约10或11个统计数据(预计)
  • 投手比赛
  • 天气
  • ......还有一些

有些事情可以解决这个问题:

1)将统计数据放入词典

2)制作一个团队课程,可以保存团队中所有玩家的一般信息,如天气和投手匹配。

但是,此后我还有10个属性。

看到这个(Class with too many parameters: better design strategy?)给了我一些想法,但不知道它们是否理想。

1)使用字典 - 但是后来无法使用方法来计算统计数据(或者必须使用单独的函数)

2)使用args / kwargs - 但是从我可以收集到的内容来看,这似乎是针对可变数量的参数,并且我的所有参数都是必需的。

3)分成小班 - 我已经把它分解了一下,但不知道我能不能再进一步了。

有没有更好的方法来构建它而不是列出一堆列出参数的类?

1 个答案:

答案 0 :(得分:0)

如果从数据库设计的角度考虑这个问题,那么拥有一个具有以下参数的BaseballPlayer对象可能会很奇怪:

  • 团队
  • 职位
  • 对手
  • 约10或11个统计数据(历史数据)
  • 约10或11个统计数据(预计)
  • 投手比赛
  • 天气

因为某些与特定BaseballPlayer相关的东西仍然相对固定,例如名称等,但这些其他东西是流动的和短暂的。

如果您将此设计为具有各种数据库表的应用程序,则此处列出的每个事物都可能代表一个单独的表,BaseballPlayer与这些其他表的关系可能是当前的和前Team等。

因此,我可能会将问题分解为更多的类,包括StatsClassTeam类(这可能是Opponent真正的......)。< / p>

但这一切都取决于你想做什么。通常当您向后弯曲以将数据塞入结构或执行相同操作以将其取回时,可以重新设计设计以使您的工作更轻松。