2009年9月10日星期四

[备忘]Python的下划线(_)名字

语言学多了太穿越了。所以记录一下Python的下划线命名规则,作为备忘。参这里

- _single_leading_underscore: weak "internal use" indicator. E.g. "from M
import *" does not import objects whose name starts with an underscore.


- single_trailing_underscore_: used by convention to avoid conflicts with
Python keyword, e.g.


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

- __double_leading_underscore: when naming a class attribute, invokes name
mangling (inside class FooBar, __boo becomes _FooBar__boo; see below).


- __double_leading_and_trailing_underscore__: "magic" objects or
attributes that live in user-controlled namespaces. E.g. __init__,
__import__ or __file__. Never invent such names; only use them
as documented.


大致的意思是:
1. 以单个下滑线开头的名字,在使用from module import *的时候,不会被导入,但是可以用 from module import _obj导入。
2. 以双下滑线开头的名字,是私有类型。也就是不能用obj.__met()这样调用。不过Python实际上并没有私有方法,因为可以这样访问:obj._Obj__met()
3. 前后都有双下划线的名字是“Magic”的。这个很多,比如对象初始化方法(构造方法):__init__()等。
4. 以单下划线结尾的名字主要是避免与关键词冲突,这是一种纯粹的习惯用法,并没有语法意义。

没有评论:

发表评论