- _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. 以单下划线结尾的名字主要是避免与关键词冲突,这是一种纯粹的习惯用法,并没有语法意义。
没有评论:
发表评论