python中单下划线(_)和双下划线(__)的特殊用法


Posted in Python onAugust 29, 2019

函数使用单下划线_开头

使用单下划线(_)开头的函数_func不能被模块外部以: from module import *形式导入。

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

类属性和类方法使用单下划线_开头

_开头为保护类型的属性和方法,仅允许类内部和子类访问,类实例无法访问此属性和方法。

类属性和类方法使用双下划线__开头

__开头为私有类型属性和方法,仅允许类内部访问,类实例和派生类均不能访问此属性和方法。

所以双划线比单划线权限更严格。

补充说明

对于__开头的属性和方法如果派生类一定要访问,使用单下划线+基类名+双下划线开头的属性和方法的形式,

 且双下划线开头的属性和方法后面最多只能以一个单下划线结束,否则也无法访问。

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中单下划线(_)和双下划线(__)的特殊用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python笔记(2)
Oct 24 Python
python基础教程之udp端口扫描
Feb 10 Python
利用Psyco提升Python运行速度
Dec 24 Python
Python外星人入侵游戏编程完整版
Mar 30 Python
Python中定时任务框架APScheduler的快速入门指南
Jul 06 Python
Python进程间通信Queue实例解析
Jan 25 Python
对numpy中数组元素的统一赋值实例
Apr 04 Python
python向已存在的excel中新增表,不覆盖原数据的实例
May 02 Python
详解numpy.meshgrid()方法使用
Aug 01 Python
python常见字符串处理函数与用法汇总
Oct 30 Python
Django Admin 上传文件到七牛云的示例代码
Jun 20 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
Nov 19 Python
python 计算两个列表的相关系数的实现
Aug 29 #Python
python同步windows和linux文件
Aug 29 #Python
python中几种自动微分库解析
Aug 29 #Python
详解python中index()、find()方法
Aug 29 #Python
python同步两个文件夹下的内容
Aug 29 #Python
Python中 CSV格式清洗与转换的实例代码
Aug 29 #Python
详解如何在cmd命令窗口中搭建简单的python开发环境
Aug 29 #Python
You might like
怎样使用php与jquery设置和读取cookies
2013/08/08 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
2020/04/29 PHP
基于jquery库的tab新形式使用
2012/11/16 Javascript
jquery文字上下滚动的实现方法
2013/03/22 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
jQuery实现右键菜单、遮罩等效果代码
2016/09/27 Javascript
Node.js检测端口(port)是否被占用的简单示例
2016/09/29 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
vue组件与复用详解
2018/04/08 Javascript
vue框架搭建之axios使用教程
2018/07/11 Javascript
通过函数作用域和块级作用域看javascript的作用域链
2018/08/05 Javascript
Echarts之悬浮框中的数据排序问题
2018/11/08 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
解决vue-router 切换tab标签关闭时缓存问题
2020/07/22 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
Python 创建子进程模块subprocess详解
2015/04/08 Python
python3实现ftp服务功能(客户端)
2017/03/24 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
2017/04/19 Python
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
Python中常用信号signal类型实例
2018/01/25 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
Python+PyQt5实现美剧爬虫可视工具的方法
2019/04/25 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
2019/09/11 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
2020/01/21 Python
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
一套比较完整的软件测试人员面试题
2012/05/13 面试题
医校毕业生自我鉴定
2014/01/25 职场文书
《寓言两则》教学反思
2014/02/27 职场文书
蛋糕店创业计划书
2014/05/06 职场文书
我的大学四年规划书范文2014
2014/09/26 职场文书
产品调价通知函
2015/04/20 职场文书
2015年工程部工作总结
2015/04/30 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP