1

这是关于类继承的正确顺序的一些基本问题。
基本上我正在尝试编写一个数值模拟来解决一个物理模型,细节并不重要(我碰巧用python写这个),它是一个众所周知的算法,通过迭代空间体积来解决。

我认为我需要的课程是:

  • 设置:定义所有模拟参数的类,如体积大小,并具有检查参数类型是否正确、计算派生参数等的方法。
  • Solver:包含求解的实际算法
  • 输出:包含所有绘图输出的句柄,并可以访问保存文件等。

我还需要一个运行方法,它可以运行求解器并定期(在设置中定义的周期)运行一些输出函数。

  1. 在一个高质量的程序中,哪个类将从哪个继承?(我猜输出继承自 Solver 继承自 Setup)
  2. run 方法属于哪里?也许应该有一些额外的基类,比如用户与之交互并包含运行方法的接口?
4

2 回答 2

0

您是否有任何机会来自 Java 背景?

首先,您没有表明您的任何类都应该从另一个类继承。就此而言,您可能不需要像您认为的那样多的课程。

Solver #包含求解的实际算法

如果它只是一个功能,您不妨将其保留为免费功能。

输出#包含所有绘图输出的句柄,并可以访问保存文件等。

如果函数没有共享状态,它也可以很容易地成为一个模块。

至于run方法,贴在最方便的地方就行了。Python 的好处是你可以在没有任何类的情况下开始原型设计,只要你发现自己经常传递相同的数据集,就可以重构为一个类。

于 2013-05-13T14:22:59.560 回答
0
  1. 有一个概念鼓励使用组合而不是继承(http://en.wikipedia.org/wiki/Composition_over_inheritance)所以我想说如果你真的不需要继承不要使用它(它们可以是独立的对象或函数,在 python 中类似于对象)。

  2. 如果你用对象建模,run() 应该在#Solver 中。回想一下,python 中不需要像其他语言那样使用接口的概念,因此您可以使用对象或函数以及您需要的算法。

于 2013-05-13T14:27:48.693 回答