【问题标题】:How recommended is using custom double underscore variables in Python?如何推荐在 Python 中使用自定义双下划线变量?
【发布时间】:2014-03-02 12:16:46
【问题描述】:

我想知道,是否推荐/Pythonic 在 Python 脚本中定义和使用自定义双下划线变量/函数?例如,SQLAlchemy 中使用的__tablename__ 或__validateitem__()(一个自定义函数,用于在将__setitem__() 应用于项目之前对其进行验证)。

如果它确实定义了一些神奇的事情发生了,或者那个特定的变量/函数确实以一种特殊的方式被使用(就像上面的两个例子),我觉得使用它们是个好主意。

我对关于最佳编码实践和使用这种命名的潜在风险的争论很感兴趣。

【问题讨论】:

    标签: python naming-conventions


    【解决方案1】:

    来自 PEP8:

    __double_leading_and_trailing_underscore__:存在于用户控制的命名空间中的“魔法”对象或属性。例如。 __init__、__import__ 或 __file__。永远不要发明这样的名字;仅按文档说明使用。

    因此,建议不要对您自己的变量使用双下划线语法。

    【讨论】:

    • 是不是因为它会误导用户认为它是标准定义的名称?或者是因为它是面向未来的,因为任何时候都可以在标准库中实现具有该名称的变量?在某些情况下,当正是这些名称的意图和强调时,会发生“神奇”的事情。
    • 用户定义的 __ 是私有标记。由于解释了python,因此没有真正的私有变量/方法。仅使用一个下划线将您的 var 标记为“小心”。__vars 的访问速度比平时慢,因此您没有理由使用它。
    • 是什么支持了程序员不应该发明这样的名字的解释?我的问题是,程序员在这里为程序员编写 API。哪一个是“你自己的”程序员?
    猜你喜欢
    • 2021-05-26
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2019-12-04
    • 2021-11-28
    • 2021-11-03
    • 2012-04-15
    相关资源
    最近更新 更多