gpt4 book ai didi

python - 在 Python 中不使用私有(private)方法和函数是不好的做法吗?

转载 作者:行者123 更新时间:2023-12-04 03:31:39 25 4
gpt4 key购买 nike

背景

几周前,我完成了 Python 的技术测试。虽然测试的总体反馈非常积极,但我在反馈中读到的其中一件事让我感到惊讶:

No encapsulation – plenty of public_functions which should be _private_functions

这让我感到惊讶,因为 - 根据我作为 Python 开发人员两年来在脑海中建立的模糊画面 - 我们真的不做私有(private)Python 中的方法或函数。我们所拥有的只是约定俗成、速记和君子协定的拼凑。但我脑海中的那个画面是正确的吗?

下划线和双下划线

所以我更深入地研究了这个问题,咨询了the standard Python documentation以及PEP 8 ,我得出以下结论:

  1. 在类属性调用name mangling 之前使用双下划线,即 __spam 将被解释作为 _classname__spam。这可以用来模拟一种原始的隐私,这样如果有人试图从其类之外调用 __spam,就会引发异常。
  2. 程序员可以使用单个下划线 来指示函数(或类似函数)是私有(private)的,但这似乎没有什么句法 效果。 PEP 8 提到调用 from M import * 时不会导入 _single_leading_underscore,但我找不到其他任何东西。

但是,这只告诉我我可以做什么,而不是我应该做什么。

我想知道的

我是否可以取消上述反馈,因为他的职业生涯可能是在 Java/C#/等方面进行编程,因此在使用 Python 进行封装时没有正确的心态?还是我应该重新考虑我编写 Python 程序的方式,以便任何封装都更加明确?

最佳答案

从技术的角度来看,没有正确或错误的代码编写方式。计算机关心的是指令和数据。如果您使用或不使用类,如果您的代码是模块化的或意大利面条式的,您的函数的名称是什么,它们是公共(public)的还是私有(private)的等等 - 当它到达 CPU 时,一切都会付诸东流。

像这样的争论是关于观点的争论。每个人都有意见。你也可以称之为味道。具有相似观点的人聚集在一起,创建组织、政党、机构等来宣传他们的想法。他们声称,可以通过某种方式概括和提炼软件的编写方式,并将其转化为“正确”或“错误”的决策。

然而,对于每条证明某事的规则,您很快就会找到与之相矛盾的另一条规则。这只是自然法则——现实是无国界的。这就是所有困惑的原因。

没有关于某事的普遍规则这样的东西,而且永远不会有。这将与宇宙的本质相矛盾:时间和熵。无论您问什么问题,答案总是“视情况而定”。

经过 40 年的编程,我的核心值(value)观归结为:

  • 一致性比风格更重要。
  • 让读者很容易理解您在做什么,更重要的是,让读者理解为什么。
  • 在正确的地方发表一个好的评论可以避免一周的头痛。
  • 读者可能就是你。
  • 始终尝试选择最适合工作的工具。
  • 遵循合理的约定,但如果有正当理由,请毫不犹豫地打破规则。
  • 没有人比编写代码的人更清楚什么是有意义的。不断问自己:我正在做的事情是否有意义,或者我是否看到了更好的方法?
  • 少即是多。

关于python - 在 Python 中不使用私有(private)方法和函数是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66694081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com