好的,所以我目前正在为 python 开发一个内部统计包,它主要面向与 arcgis geoprocessor 结合使用,用于建模比较和工具。
无论如何,我只有一个类,用于计算统计数据。让我们称之为统计。现在我的统计课已经到了非常大的地步。它使用由其他统计数据计算的统计数据来计算其他统计数据集等。这导致了很多私有(private)变量,这些变量只是为了防止重新计算而保留。然而有一些,虽然使用得相当频繁,但它们通常只被功能的一两个关键部分使用。 (例如矩阵对角线和概率的总和)。然而,它开始成为一个主要的眼中钉,我觉得我做这件事大错特错了。
这不好吗?
一位同事建议我简单地开始将核心和通用功能放在一起,在主类中,然后简单地使用胶囊,引用主类,并简单地做他们自己需要的任何功能.例如。为了计算模型预测的准确性,我会创建一个胶囊,它只需要对父级的引用,它将卸载模型预测所需的所有计算。
这样的事情真的是个好主意吗?有没有更好的办法?现在我有十几种不同的子统计数据被转储到一个文本文件中以制作一个小报告。代码库在增长,如果我能开始拆分越来越多的 python 类,我会很高兴。我只是不确定做这样的事情最好的方法是什么。
最佳答案
为什么不为每个需要计算的统计数据创建一个类,而当统计数据需要其他统计数据时,只需将后者的一个实例传递给计算方法?但是,对您的代码和所需功能知之甚少。或许您可以更广泛地描述您需要计算哪种统计数据以及它们如何相互依赖?
无论如何,如果我必须计算某些统计数据,我会立即转向为每个统计数据创建单独的类。我曾经做过一次,当时我正在为 python 编写代码统计库。每个统计数据,例如类被继承的次数或函数被调用的频率,都是一个单独的类。这样每一个都很简单,但是我不需要在另一个中使用它们中的任何一个。
关于python - 多少私有(private)变量太多了?封装类?类实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2349529/