相关疑难解决方法(0)

返回一个对象与返回一个元组

我在python中开发了一个文件类,可以读取和写入一个包含xyz坐标列表的文件.在我的程序中,我已经有一个Coord3D类来保存xyz坐标.

我的问题是关于getCoordinate(index)方法的设计.我应该返回一个浮点元组还是一个Coord3D对象?

在第一种情况下,我得到非常低的耦合,但是我可能不得不用获得的值实例化Coord3D对象,尽管在文件类之外.在第二种情况下,我将使文件类与Coord3D类紧密耦合.

请注意,我认为两种解决方案之间没有太大差异,但我想了解您的答案及其背后的原因.


编辑:回顾我到现在为止的答案,看起来没有明确的选择.有人说(适当地)python不是Java,并且你不需要专门的类来处理所有事情,因为你需要语言架构.但是,在我的情况下,我有以下条件:

  1. 我正在使用一个库,其中Coord3D对象按原样使用.使用它会增加我的库的凝聚力,因为统一使用数据类型.
  2. Coord3D对象具有状态和行为.实际上,Coord3D对象聚合单个实体中的坐标和单位.Coord3D对象之间的操作将考虑可能不同的单元,并相应地采取行动.
  3. 我可以将集中控制代码放入Coord3D类实例中以拒绝,例如,长度为4或非单位的数组.如果我使用元组,我无法执行此检查.此外,如果一个方法接受Coord3D,有点保证它是预先形成的(你可以加粗并检查isinstance,或检查界面).元组可以包含无效数据.虽然在故障发生的地方完成了python处理错误的方法,但是一个阻止我用三个字符串组成的xyz坐标的类在某种程度上是有益的(请纠正我,如果错的话,请)

另一方面,使用元组具有以下优点:

  1. 少占用资源,在巨大的情况下非常关键
  2. 设计更简单.更多类意味着更复杂的设计.元组是一种标准数据类型,很容易理解,可以轻松解压缩.个性化的课程不是.
  3. 使用元组,XYZFile类与库的其余部分完全分离(因为它不使用Coord3D对象).这意味着它可以作为一个独立的实体完全重用.

进一步评论非常欢迎!

python

11
推荐指数
2
解决办法
6381
查看次数

标签 统计

python ×1