gpt4 book ai didi

python - 如何轻松区分Python中的属性和方法?

转载 作者:行者123 更新时间:2023-12-01 04:17:36 24 4
gpt4 key购买 nike

让我们看一下 float 类及其一些属性:

[
...,
'as_integer_ratio',
'conjugate',
'fromhex',
'hex',
'imag',
'is_integer',
'real']

PEP008编码指南,我感到有点不安,因为我永远不知道哪个是属性,哪个是方法。

例如,我如何轻松(无需尝试)知道是否需要编写 foo.realfoo.real()。如果 real 是一个属性,为什么 hex 是一个方法?

在一个项目中,我选择用驼峰命名法命名我的方法,用小写命名属性,但这不符合Python编码风格。

为什么我自己的标准不是一个好主意(我认为这不是一个好主意,因为 Python 选择了其他命名约定)?

最佳答案

命名约定始终是主观的。没有明确的“最佳”,否则全世界都会跨语言使用它。

命名约定的最不主观的质量可能是它的应用的一致性。标准松散或松散遵守的团队最终可能会失去一致性,而一致性的丧失可能会导致对每个标识符的熟悉程度降低并增加智力开销。因此,有时,如果没有太多规则和异常(exception)的更简单的标准可以增加团队始终如一地遵守这些标准的可能性,那么这可能是可取的。

With the PEP008 coding guidelines, I feel a bit disturbed because I never know which is a property and which is a method.

这里值得注意的一件事是,准确地说,我们可能应该声明,您不知道标识符是代表属性还是方法基于其名称

For example, how can I easily (without trying) know whether need do write foo.real or foo.real(). If real is an attribute, why does hex is a method?

除了丰富的 IDE 功能之外,命名约定通常无法帮助您不必提前了解某些内容。例如,如果您将属性命名为 LikeThis 和方法 like_this,那么我们会将区分属性和方法的智力开销转移到名称(“这叫什么? ”而不是“这是什么?”)。然而,名称往往更明显、更突出(在文档、IDE 和代码中),因此可能更容易记住、快速找到并跟踪哪个是哪个。这取决于您:每个人的里程可能会有所不同。

Why is my own standards not a good idea (I assume it is not a good idea because Python chose other naming conventions)?

没有一个头脑正常的人可以说你的标准比 Python 的官方约定更好或更差。然而,当您选择偏离官方标准时,您就偏离了惯用的道路。

惯用代码往往是大多数人最熟悉的,当您多年后重新访问代码时,也是您自己最熟悉的。这是因为我们已经被它饱和了。大多数 Python 示例都将使用官方的 Python 约定,您会稍微偏离这些约定。因此,这可能会让您的代码对其他人来说有点陌生,甚至可能在遥远的将来对您自己来说也显得有点陌生。

尽管如此,如果您确实对此有强烈的感觉,无论如何您都可能会坚持自己的标准。然而,当偏离官方标准时,这种风险值得牢记。

关于python - 如何轻松区分Python中的属性和方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34137160/

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