Python: 如何构造一个有很多参数的 Class
Python: How To Construct A Class With Many Parameters
我在决定如何构建我的 class 时遇到了一些困难。我拥有的是一名棒球运动员class和以下必要属性:
- 玩家 ID(来自数据库的密钥)
- 姓氏
- 名字
- 团队
- 位置
- 对手
- 大约 10 或 11 个统计数据(历史)
- 大约 10 或 11 个统计数据(预计)
- 投手对决
- 天气
- ...还有一些
一些事情可以分解一下:
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,包括 StatsClass
和 Team
class(这可能是 Opponent
真的是...).
但这完全取决于你想做什么。通常当您竭尽全力将数据塞入结构或做同样的事情以将其取出时,可以重新设计设计以使您的工作更轻松。
我在决定如何构建我的 class 时遇到了一些困难。我拥有的是一名棒球运动员class和以下必要属性:
- 玩家 ID(来自数据库的密钥)
- 姓氏
- 名字
- 团队
- 位置
- 对手
- 大约 10 或 11 个统计数据(历史)
- 大约 10 或 11 个统计数据(预计)
- 投手对决
- 天气
- ...还有一些
一些事情可以分解一下:
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,包括 StatsClass
和 Team
class(这可能是 Opponent
真的是...).
但这完全取决于你想做什么。通常当您竭尽全力将数据塞入结构或做同样的事情以将其取出时,可以重新设计设计以使您的工作更轻松。