__method__、method和_method__之间的区别是什么
有没有或者出于某种随机的原因,人们认为__doc__应该是这样的,而不是doc。是什么让一种方法比另一种方法更特别?
发布于 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__。永远不要发明这样的名字;只按照文档记录使用它们。发布于 2009-06-01 18:12:21
method只是一个普通的method_method,不应该被调用,除非你知道你在做什么,这通常意味着你已经编写了yourself.__method方法,两个下划线是用来防止名称篡改的。像这样的属性或方法可以通过instance._ClassName__method访问。尽管很多人称其为“私有”,但事实并非如此。您不应该使用它来阻止某人访问此方法,使用instead.__method__ _method用于修改实例行为的特殊方法。不要这样命名您自己的方法。发布于 2009-06-01 15:52:10
这些都是约定,所以它们不会强制执行。尽管如此,你通常可以期待:
__somename__在python语言规范本身中定义的东西。不要在您自己的命名中使用此名称。
_somename这通常被认为是通过某种不同的机制而不是直接调用的。类似于在大多数其他语言中声明私有,但不以任何方式强制执行。
__somename这真的不应该被直接调用,并且在内部被破坏,以防止您意外地这样做。如果出于某种原因,您确实需要调用它,请查看文档以了解如何调用。
上述任何一种方法都同样适用于函数、变量或类名。
https://stackoverflow.com/questions/935378
复制相似问题