单下划线开头(_)

  • 在模块中使用单下划线开头

    模块中使用单下划线(_)开头定义函数、全局变量和类不能被模块外部以: from module import * 形式导入。

    但可以用:from module import _func 形式单独导入。

    当然定义函数、全局变量和类前面有2个或者更多下划线开头也不可以用 from module import * 的形式导入。
# 单下划线开头的函数
def _my_abs(num):
return 'my_abs:' + str(abs(num)) # 单下划线开头的全局变量
_My_var # 单下划线开头的类
_My_Class:
pass
  • 在类中使用单下划线开头

    带单下划线的类变量、实例变量和方法,允许类内部、类实例和子类访问,不受限制。

    单下划线仅仅是一种私有申明约定,访问不受限制。

双下划线开头(__)

  • 在class类的内部,带双下划线的类变量、实例变量、方法具有正常访问权限。
  • 在继承结构中,带双下划线的基类的类变量和实例变量不能被子类直接访问。
  • 在实例中,带双下划线的类变量、实例变量、方法不能被直接访问。但有办法间接访问。

双下划线开头的类变量、实例变量、方法在继承和实例中可以间接访问

双下划线开头的变量和方法替换为`单下划线+类名+双下划线开头的变量和方法`的形式,且双下划线开头的变量和方法后面最多只能以一个单下划线结束,否则也无法访问。
class BaseCls:
def __init__(self, name, age, nick_name):
self.name = name
self.__nick_name_ = nick_name # __nick_name后面最多以一个_结束,否则通过基类名混淆的方式也无法访问了。
self.age = age class SubCls(BaseCls):
def __init__(self, name, age, addr, nick_name):
super().__init__(name, age, nick_name)
self.addr = addr
self.a_nick_name = self._BaseCls__nick_name_

python中单下划线(_)和双下划线(__)的特殊用法的更多相关文章

  1. python中有两个下划线__的是内置方法,一个下划线_或者没有下划线的可能是属性,也可能是方法,也可能是类名

    python中有两个下划线__的是内置方法,一个下划线_或者没有下划线的可能是属性,也可能是方法,也可能是类名,如果在类中定义的就是类的私有成员. >>> dir(__builtin ...

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

      单下划线.双下划线.头尾双下划线说明: __foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的. _foo: 以单下划线开头的表示的是 protected 类 ...

  3. python类中方法加单下划线、双下划线、前后双下滑线的区别

    首先看一段代码: class Foo(): def __init__(self): print "__init__ method" def public_method(self): ...

  4. Python模块是否支持自定义属性使用双下划线开头和结尾?

    我们知道在Python中,变量名类似__xxx__的,也就是以双下划线开头并且以双下划线结尾的变量和方法,是特殊变量,特殊变量是可以直接访问的,不是私有变量,所以,一般实例变量和类变量以及方法不能用_ ...

  5. Python - 面向对象编程 - 魔术方法(双下划线方法)

    什么是魔术方法 在Python中,所有以 __ 双下划线包起来的方法,都统称为 Magic Method 魔术方法,也叫双下划线方法 有哪些重要的魔术方法? __new__ https://www.c ...

  6. 百万年薪python之路 -- 面向对象之 反射,双下方法

    面向对象之 反射,双下方法 1. 反射 计算机科学领域主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省) python面向对象中的反射:通过字符串的形式操作对象相关的属性.python ...

  7. python 实例属性之单,双下划线

    具体区别看下面例子 class A: def __init__(self,name='Andy'): self._name = name class B: def __init__(self,name ...

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

    Python中单下划线和双下划线: 一.分类 (1).以单下划线开头,表示这是一个保护成员,只有类对象和子类对象自己能访问到这些变量. 以单下划线开头的变量和函数被默认是内部函数,使用from mod ...

  9. Python3 单下划线_双下划线__开头

    Python 中,下划线对解释器有特殊的含义,而且是内建标识符所使用的符号,使用时要多加留意. 在 Python3 的面向对象中,双下划线开头的变量和方法表名为私有变量和私有方法. __private ...

  10. 【编程开发】Python隐藏属性——使用双下划线标识私有属性,外部不可直接访问

           from:https://zhuanlan.zhihu.com/p/30553607 小编在最初使用上Python之后,就一发不可收拾,人生苦短.我用Python,不光是因为其优雅简洁, ...

随机推荐

  1. 前端VUE环境构建

    https://nodejs.org/en/ 安装node 安装淘宝npm镜像 D:\>cd cnpm D:\cnpm>npm install -g cnpm --registry=htt ...

  2. 【leetcode】1033. Moving Stones Until Consecutive

    题目如下: Three stones are on a number line at positions a, b, and c. Each turn, you pick up a stone at ...

  3. web选择文件夹上传

    我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 这次项目的需求: 支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,i ...

  4. [USACO17DEC]Barn Painting (树形$dp$)

    题目链接 Solution 比较简单的树形 \(dp\) . \(f[i][j]\) 代表 \(i\) 为根的子树 ,\(i\) 涂 \(j\) 号颜色的方案数. 转移很显然 : \[f[i][1]= ...

  5. FastDFS整合nginx(三)

    一 安装 百度云:所有附件的地址 unzip fastdfs-nginx-module-master.zip [root@node02 mnt]# cd fastdfs-nginx-module-ma ...

  6. CSU 1553 Good subsequence(RMQ问题 + 二分)

    题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1553 Description Give you a sequence of n nu ...

  7. Apache启动报错:Invalid command 'AuthType', perhaps misspelled or defined by a module not included in it

    在apache配置文件里面加了AuthType PFApacheAgent,,结果重启apache的时候歇菜了,,总是报上面的错, <Directory />AllowOverride n ...

  8. 【CDN+】 CDN项目的两大核心--缓存与回源

    前言 项目中碰到CDN专用名词: 回源, 然后不知道什么意思,反过来查询了一下CDN相关的一些基本术语,特做记录 CDN基础概念 CDN (Content Delivery Network,即内容分发 ...

  9. android7.0对于SharedPreferences设置模式的限制

    错误信息: 03-28 10:16:12.701   830   932 E AndroidRuntime: FATAL EXCEPTION: Thread-903-28 10:16:12.701   ...

  10. vue中的导航钩子

    //钩子 登录拦截 router.beforeEach((to, from, next) => { const sessionToken = window.sessionStorage.getI ...