Python带下划线的变量或函数命名详细介绍
python中的标识符可以包含数字、字母和_
,但必须以字母或者_
开头,其中以_
开头的命名一般具有特殊的意义。
前后均带有双下划线__的命名
一般用于特殊方法的命名,用来实现对象的一些行为或者功能,比如__new__()
方法用来创建实例,__init__()
方法用来初始化对象,
x + y操作被映射为方法x.__add__(y)
,序列或者字典的索引操作x[k]映射为x.__getitem__(k)
,__len__()
、__str__()
分别被内置函数len()、str()调用等等。
仅开头带双下划线__的命名
用于对象的数据封装,以此命名的属性或者方法为类的私有属性或者私有方法。
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class Foo(object):def __init__(self):self.__name = 'private name'def getname(self):return self.__namedef __spam(self):print 'private method'def bar(self):self.__spam()
如果在外部直接访问私有属性或者方法:
>>> f = Foo()
>>> f.__nameTraceback (most recent call last):File "<pyshell#1>", line 1, in <module>f.__name
AttributeError: 'Foo' object has no attribute '__name'
>>> f.__spam()Traceback (most recent call last):File "<pyshell#2>", line 1, in <module>f.__spam()
AttributeError: 'Foo' object has no attribute '__spam'
是不可行的,这就起到了隐藏数据的作用,但是这种实现机制并不是很严格,机制是通过自动"变形"实现的,类中所有以双下划线开头的名称__name
都会自动变为"_类名__name
"的新名称:
>>> f._Foo__name
'private name'
>>> f._Foo__spam()
private method
这样就可以访问了。
这种机制可以阻止继承类重新定义或者更改方法的实现,比如,定义一个Foo的派生类:
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class Goo(Foo):def __spam(self):print 'private method of Goo'
重写了__spam
方法,运行:
>>> g = Goo()
>>> g.bar()
private method
调用bar()方法的时候依然执行的是Foo类的__spam()
方法,因为在bar()方法的实现中,self.__spam()
已自动变形为self._Foo__spam()
,Goo继承的bar()方法也是如此。
以单下划线_开头
的命名
一般用于模块中的"私有"定义的命名。
from module import *
语句用于加载模块中的所有名称,要控制导入的名称,一种方法是定义列表__all__
,只有在__all__
中的名称才能通过*导入,
另一种方法就是以单下划线开头命名定义了,这种定义不会被*导入。
当然,在类中也可以用单下划线开头来命名属性或者方法,这只是表示类的定义者希望这些属性或者方法是"私有的",但实际上并不会起任何作用。
Python带下划线的变量或函数命名详细介绍相关推荐
- python变量必须以字母和下划线_【转载】关于python中带下划线的变量和函数的意义...
Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就易于阅读, ...
- python中变量和函数的区别_关于python中带下划线的变量和函数 的意义
Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就易于阅读, ...
- 关于python中带下划线的变量和函数 的意义
转载:https://www.cnblogs.com/wangshuyi/p/6096362.html 总结: 变量: 1. 前带_的变量: 标明是一个私有变量, 只用于标明, 外部类还是可以访问 ...
- 关于python中带下划线的变量和函数 的意义,class类带一个下划线和带两个下划线的定义
总结: 变量: 1. 前带_的变量: 标明是一个私有变量, 只用于标明, 外部类还是可以访问到这个变量 2. 前带两个_ ,后带两个_ 的变量: 标明是内置变量, 3. 大写加下划线的变量: ...
- python中变量和函数的区别_python中带下划线的变量和函数的意义
Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就易于阅读, ...
- python中定义变量为啥要用下划线_关于python中带下划线的变量和函数 的意义
核心风格:避免用下划线作为变量名的开始. 因为下划线对解释器有特殊的意义,而且是内建标识符所使用的符号,我们建议程序员避免用下划线作为变量名的开始. 一般来讲,变量名_xxx被看作是"私有 ...
- python中标识符下划线用作开头_python python中那些双下划线开头的那些函数都是干啥用用的...
1.写在前面 今天遇到了__slots__,,所以我就想了解下python中那些双下划线开头的那些函数都是干啥用用的,翻到了下面这篇博客,看着很全面,我只了解其中的一部分,还不敢乱下定义. 其实如果足 ...
- python类实例化 输入参数名字 下划线_Python 用下划线作为变量前缀和后缀指定特殊变量...
原:http://blog.163.com/jackylau_v/blog/static/175754040201182113817834/ 转过来方便查阅=w= Python 用下划线作为变量前缀和 ...
- python中那些双下划线开头的那些函数都是干啥用用的
1.写在前面 今天遇到了__slots__,,所以我就想了解下python中那些双下划线开头的那些函数都是干啥用用的,翻到了下面这篇博客,看着很全面,我只了解其中的一部分,还不敢乱下定义. 其实如果足 ...
最新文章
- STL链式存储结构——————list链表
- shell比较两个字符串是否相等
- 2017—2018 实验报告:实验一
- Java面试题之有没有有顺序的Map实现类,如果有,他们是怎么实现有序的?
- 转: CentOS 安装 SVN1.8 客户端
- 关于量子计算机的科学论文,量子计算机论文,关于科学家尝试用量子计算机创造时间旅行论文范文-毕业论文网...
- 二元函数可导与可微的关系_视频教学:期末试卷解析之多元函数基本概念及相互关系讨论...
- python编写登录接口_Python之编写登录接口
- js 不相等 多次随机数_node.js静态\动态服务器
- 中国互联网的那些事——二十年回顾
- RIP总结(转自鸿鹄论坛)
- 四大汽车总线:LIN、CAN、FlexRay、MOST简述
- 从网页中获取图片链接的方法。
- 【计算机网络】网络数据传输流程详解
- 玄秘塔碑-唐代柳公权创作书法作品
- 爬取网页表格到Excel ?别再复制粘贴了,太慢!
- Junit-对涉及数据库操作的服务进行单元测试
- 一起来玩玩WebGL--第一弹
- qrcode实现二维码
- 优信拍集团php面试题_【优信拍PHP面试】一次不错的面试体验,面试官根据实际出发提问。-看准网...
热门文章
- 错误:Failed to create the Java Virtual Machine
- Windows server 2008文件服务器之二屏蔽影音文件以及指定文件名
- 【实用】ALV 清单右击隐藏列失效的处理
- 【QM-05】Material Specification(物料说明)
- 【基础】ABAP不同变量类型之间数值大小比较
- 定义进项税代码缺省值
- LINK : fatal error LNK1168: cannot open Debug/Test.exe for writing
- SAP MM 库存初始化和批量扩充物料仓位
- SAP SF打印次数统计
- SQVI和SAP查询QUERY的区别和使用注意事项