首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >"__method__“和"method”的区别

"__method__“和"method”的区别
EN

Stack Overflow用户
提问于 2009-06-01 15:42:32
回答 7查看 9.5K关注 0票数 38

__method__method_method__之间的区别是什么

有没有或者出于某种随机的原因,人们认为__doc__应该是这样的,而不是doc。是什么让一种方法比另一种方法更特别?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-06-01 15:51:12

  • __method:私有method.
  • __method__:特殊的Python方法。它们这样命名是为了防止名称冲突。Check this page for a list of these special methods.
  • _method:这是Python style guide.

中受保护方法的推荐命名约定

从风格指南中:

  • _single_leading_underscore:弱“内部使用”指标。例如,from M import *不会导入名称以约定使用的underscore.
  • single_trailing_underscore_:开头的对象,以避免与Python关键字冲突,例如

Tkinter.Toplevel(master,class_='ClassName')

  • __double_leading_underscore:当命名类属性时,调用名称混乱(在类FooBar中,__boo变为_FooBar__boo;请参阅master“魔术”对象或用户控制的名称空间中的属性。例如,__init____import____file__。永远不要发明这样的名字;只按照文档记录使用它们。
票数 74
EN

Stack Overflow用户

发布于 2009-06-01 18:12:21

  • method只是一个普通的method
  • _method,不应该被调用,除非你知道你在做什么,这通常意味着你已经编写了yourself.
  • __method方法,两个下划线是用来防止名称篡改的。像这样的属性或方法可以通过instance._ClassName__method访问。尽管很多人称其为“私有”,但事实并非如此。您不应该使用它来阻止某人访问此方法,使用instead.
  • __method__ _method用于修改实例行为的特殊方法。不要这样命名您自己的方法。
票数 23
EN

Stack Overflow用户

发布于 2009-06-01 15:52:10

这些都是约定,所以它们不会强制执行。尽管如此,你通常可以期待:

代码语言:javascript
运行
复制
__somename__

在python语言规范本身中定义的东西。不要在您自己的命名中使用此名称。

代码语言:javascript
运行
复制
_somename

这通常被认为是通过某种不同的机制而不是直接调用的。类似于在大多数其他语言中声明私有,但不以任何方式强制执行。

代码语言:javascript
运行
复制
__somename

这真的不应该被直接调用,并且在内部被破坏,以防止您意外地这样做。如果出于某种原因,您确实需要调用它,请查看文档以了解如何调用。

上述任何一种方法都同样适用于函数、变量或类名。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/935378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档