python - 关于Python封装的最佳实践

标签 python debugging encapsulation

我怀疑这将是一个非常具有补救性的问题,但这里是:

经常,当我在类中创建新的类和方法时,我倾向于创建许多我认为在其函数中基本上是“本地”的变量,通过将它们设为 self.x 而不是从外部访问例如,只是简单的旧 x 。我发现这对于调试很有帮助(例如,如果我的最终结果不稳定,我可以返回以确保数组 x 的内容是我认为的内容)。

这使我能够在写作过程中进行所需的诊断,但随后我必须返回并更改所有 self.x、self.y 等...回到普通的旧 x、y 等...这样当我稍后输入对象名称时,我可以选择的内容列表是可以管理的。

我想这种做法反射(reflect)了我作为初学者的状态,我想知道那些经验丰富的人在这方面做了什么。我想一定有更好的方法。感谢任何时间或建议。

最佳答案

封装实际上是一种抽象形式。 您想要实现的目标是尽可能轻松地处理数据,并向外部隐藏所有实质细节。您想要loosely coupled components .
以下是一些提示:

  • 考虑正确的数据结构。它应该贴近问题、易于使用且易于实现。
  • 避免冗余代码。一个函数对应一个任务。每个模块一个类。这也增加了代码重用。
  • 思考库而不是程序。将相关的函数和模块分组到库中。使用它们的程序应该将这些库粘合在一起。然后,您可以独立于主程序改进库,并将代码用于其他项目。
  • 避免全局状态。您不希望变量在各处使用并在意外的地方被修改。这只会导致日后的麻烦。

尽管如此,请继续编码。随着时间的推移,你会在这方面做得更好。这只是经验的积累。如果您有空闲时间来处理此问题,请尝试 Project Euler

关于python - 关于Python封装的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25983472/

相关文章:

node.js - 使用intellij远程调试node js服务器

jquery - 配置 Firebug 以忽略 JQuery POST

java - 有 OOP 委托(delegate)时选择类方法

python - 将程序输出重定向到文件和 shell

python - 使用 python 字符串格式有条件地包括其他字符

python - 如何在 Windows 上从 python 获取长文件系统路径

python - 自动运行 python 结果为 "EOF when reading a line "

使用 Google Chrome 逐行调试 Javascript

c++ - 使用 STL 迭代器封装 vector 是一种好习惯吗?如果是?怎么做到的?

c# - 使封装 List<> 的对象可通过 [] 运算符访问?