python中的单下划线和双下划线意义和作用

Python中并没有真正意义上的“私有”,类的属性的的可见性取决于属性的名字(这里的属性包括了函数)。例如,以单下划线开头的属性(例如_spam),应被当成API中非公有的部分(但是注意,它们仍然可以被访问),一般是具体实现细节的部分。单下划线常用来实现模块级私有化,当我们使用“from mymodule import *”来加载模块的时候,不会加载以单下划线开头的模块属性。

而以双下划线开头并最多以一个下划线结尾的属性(例如___spam),将会被替换成_classname__spam这样的形式,其中classname是当前类的类名。知道了这点之后,我们仍然可以访问到python的私有函数

时间: 2024-10-05 02:52:52

python中的单下划线和双下划线意义和作用的相关文章

python 里面的单下划线与双下划线的区别(私有和保护)

Python 用下划线作为变量前缀和后缀指定特殊变量. _xxx 不能用'from module import *'导入 ——变量名_xxx被看作是“私有 的”,在模块或类外不可以使用.__xxx__ 系统定义名字 ——__xxx 类中的私有变量名 ——只有类对象自己能访问,连子类对象也不能访问到这个数据. 核心风格:避免用下划线作为变量名的开始. 因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始.一般来讲,变量名_xxx被看作是“私有 的

python 里面的单下划线与双下划线的区别

python 里面的单下划线与双下划线的区别 Python 用下划线作为变量前缀和后缀指定特殊变量. _xxx 不能用'from moduleimport *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划线作为变量名的开始. 因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下 划线作为变量名的开始.一般来讲,变量名_xxx被看作是“私有 的”,在模块或类外不可以使用. 当变量是私有的时候,用_xxx 来表示变量是很好的习

python中的下划线及双下划线

一.Python 用下划线作为变量前缀和后缀指定特殊变量 1. 单下划线开头: _xxx:弱“内部使用”标识,如:”from Module import *”,将不导入所有以下划线开头的对象,包括包.模块.成员 2. 双下划线开头: __xxx:模块内的私有成员,外部无法直接调用. 即:私有类型的变量.只能是允许这个类本身进行访问了.连子类也不可以 3. 双下划线开头和结尾: __xxx__ :系统定义名字, 用户无法控制的命名空间中的“魔术”对象或属性, 如: __name__.__doc__

python单下划线、双下划线、头尾双下划线说明:

单下划线.双下划线.头尾双下划线说明: __foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的. _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import * __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了. 来源: http://www.runoob.com/python/python-object.htm

私有属性,私有方法,类变量,实例变量,单下划线,双下划线

1.私有属性__age,不能通过实例对象直接调用,而是通过一个方法来调用 class Dog: def __init__(self, new_age): self.__age = new_age def get_age(self): return self.__age wang_cai = Dog(1) result = wang_cai.get_age() print(result) 2.私有方法,通过一个共有方法来调用 class Dog(object):   def __init__(se

python(七) Python中单下划线和双下划线

Python中单下划线和双下划线: 一.分类 (1).以单下划线开头,表示这是一个保护成员,只有类对象和子类对象自己能访问到这些变量. 以单下划线开头的变量和函数被默认是内部函数,使用from module improt *时不会被获取,但是使用import module可以获取. (2).以单下划线结尾仅仅是为了区别该名称与关键词 (3).双下划线开头,表示为私有成员,只允许类本身访问,子类也不行.在文本上被替换为_class__method  (4).双下划线开头,双下划线结尾.一种约定,P

Python中单下划线和双下划线

Python中单下划线和双下划线: 一.分类 (1).以单下划线开头,表示这是一个保护成员,只有类对象和子类对象自己能访问到这些变量. 以单下划线开头的变量和函数被默认是内部函数,使用from module import *时不会被获取,但是使用import module可以获取. (2).以单下划线结尾仅仅是为了区别该名称与关键词 (3).双下划线开头,表示为私有成员,只允许类本身访问,子类也不行.在文本上被替换为_class__method  (4).双下划线开头,双下划线结尾.一种约定,P

python中基于descriptor的一些概念(下)

@python中基于descriptor的一些概念(下) 3. Descriptor介绍 3.1 Descriptor代码示例 3.2 定义 3.3 Descriptor Protocol(协议) 3.4 Descriptor调用方法 4. 基于Descriptor实现的功能 4.1 property 4.2 函数和方法,绑定与非绑定 4.3 super 5. 结尾 3. Descriptor介绍 3.1 Descriptor代码示例 class RevealAccess(object):   

python中的单下划线,双下划线以及两端双下划线

1.在python的解释器中,_是上一条语句的执行结果,最早是CPython施行,到现在其他类型的解释器也在使用2.上面的语句执行结果是在屏幕上打印十行hello world,我们并不需要0-9这些数字,所以没必要给他一个变量名'_'3.单下划线:单下划线的变量是一种程序员之间美丽的约定——只要是这种变量就不要随便在类外部去访问它!!! 但是如果我们在导入模块时来看这个单下划线开头的变量,那就不一样了,在这里这种特殊名字的变量就变成了类似一种某个模块的“私有”变量,因为我们在使用from 模块名