OOP与MVC编程sty

2024-10-01 07:36:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一些数据分析软件,并决定使用这种方法:

epn:
型号/数据.py<;-模型定义
型号/阅读器.py<;-如何将数据读入模型
视图/图形用户界面.py<;-主图形用户界面框架(wx)
视图/对话框.py<;-不同的对话框(wx)
epn.py公司<;-控制器

用于gui和我使用的数据之间的通信wx.lib.pubsub. 所以当按下“调制指数”按钮时,epn.py公司捕获消息和命令:

self.view.control_panel.displayModulationIndex(self.data.getModulationIndex())

在哪里self.data.getModulationIndex()是:

^{pr2}$

另一方面,我可以这样写:

def getModulationIndex(self, m, f)
  # other things

称之为:

m = self.data.mean_flux
f = self.data.fluxes
self.view.control_panel.displayModulationIndex(self.data.getModulationIndex(m, f))

在我看来,第一个例子更好(更短、封装、更可靠)。但是测试起来比较困难——你不能只在一些模拟对象上调用这个方法。

希望这一点很清楚

问候
chriss公司


Tags: 数据方法py模型ltself视图data
1条回答
网友
1楼 · 发布于 2024-10-01 07:36:14

示例1:“更好(更短、封装、更可靠)”

不是真的。在

  • 示例1函数调用不短于示例2;在调用函数之前必须设置实例变量,而不是将值作为参数传递。代码是一样的。

  • 示例1函数调用不再封装。封装是类的一个属性,而不是一个单独的方法。方法只是方法,它们通常有参数,因此它们是清晰、明显、可替换和易于测试的。

  • 任何一个例子都不能证明函数的错误。您很可能忘记设置实例变量,就像忘记在函数调用中传递实例变量一样。在

    当您有显式参数(示例2)时,Python可以检查您是否提供了正确数量的参数。在示例1中,没有为您完成检查。

例1:“更难测试”

同意。在

摘要

实例变量是特殊的。它们反映了某个物体的存在状态。对于模型对象,它们是严肃的业务,因为它们通常是持久的。对于GUI对象,它们是“正在显示的内容”,这通常是暂时的。在

不要过度使用实例变量。实例变量应该是有意义和有意义的。而不仅仅是垃圾变量,这些变量在其他地方都没有合适的归宿。在

方法函数只是函数。在OO世界中,它们仍然只是函数。它们将输入参数映射到输出结果(或对象状态更改)。传递所有有意义的论点。在

相关问题 更多 >