Python: 如何构造一个有很多参数的 Class

Python: How To Construct A Class With Many Parameters

我在决定如何构建我的 class 时遇到了一些困难。我拥有的是一名棒球运动员class和以下必要属性:

一些事情可以分解一下:

1) 将统计数据放入字典

2) 组建一个团队 class,该团队可以保存团队中所有球员通用的一般信息,例如天气和投手匹配。

但是,在这之后我还有10个属性。

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

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

2) 使用 args/kwargs - 但据我所知,这些似乎是用于可变数量的参数,并且我的所有参数都是必需的。

3) 分解成更小的 classes - 我已经分解了一些,但不知道是否可以进一步分解。

有没有比 class 列出一堆参数更好的构建方法?

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

  • 团队
  • 排名
  • 对手
  • 大约 10 或 11 个统计数据(历史)
  • 大约 10 或 11 个统计数据(预计)
  • 投手对决
  • 天气

因为某些与特定 BaseballPlayer 相关的事物保持相对固定,例如姓名等,但这些其他事物是流动的和短暂的。

如果您将此设计为具有各种数据库 table 的应用程序,那么,此处列出的每个事物可能代表一个单独的 table,而 BaseballPlayer 与这些其他 table 的关系相当于现在和以前的 Team,等等

因此,我可能会将问题分解为更多 classes,包括 StatsClassTeam class(这可能是 Opponent 真的是...).

但这完全取决于你想做什么。通常当您竭尽全力将数据塞入结构或做同样的事情以将其取出时,可以重新设计设计以使您的工作更轻松。