[py]python的私有变量
python中并没有真正意义上的私有成员,它提供了在成员前面添加双下划线的方法来模拟类似功能。具体来说:
_xxx 表示模块级别的私有变量或函数
__xxx 表示类的私有变量或函数
这被称为name nangling,将__membername替换为_classname__membername。
这样从语法上实现了私有成员不能用classinstance.__membername访问,但是任然可以用
classinstance._classname__membername访问。
python类的私有属性
class A(object):
def __init__(self):
self.age = 22
a = A()
class B(object):
def __init__(self):
self.__age = 22
b = B()
class私有属性防止子类同名重写
子类继承父类age属性,并重写,后访问父类age,也变了
class A(object):
def __init__(self):
self.age = 42
def foo(self):
print self.age
class B(A):
def __init__(self):
super(A, self).__init__()
self.age = 21
def bar(self):
print self.age
p = B()
p.bar()
p.foo()
//21 21
将父类的__age私有化后,子类继承重写该变量,访问父类方法也不会改变
class A(object):
def __init__(self):
self.__age = 42
def foo(self):
print self.__age
class B(A):
def __init__(self):
super(B, self).__init__()
self.__age = 21
def bar(self):
print self.__age
p = B()
p.bar()
p.foo()
//21 42
[py]python的私有变量的更多相关文章
- Python的私有变量与装饰器@property的用法
Python的私有变量是在变量前面加上双横杠(例如:__test)来标识, Python私有变量只能在类内部使用,不被外部调用,且当变量被标记为私有后,调用时需再变量的前端插入类名,在类名前添加一个下 ...
- [深入Python]Python的私有变量
Python没有真正的私有变量.内部实现上,是将私有变量进程了转化,规则是:_<类名><私有变量> 下面的小技巧可以获取私有变量: class Test(object): de ...
- python的私有变量解析
在内的内部定义并使用,外部无法訪问,以双下划线作为前作,定义后被python转为 _classname__变量名了 ------------------------------------------ ...
- python基础-私有变量和方法
如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问 __priva ...
- Python访问私有变量
代码: class Counter(object): __secount=0 publicfs=0 def getcount(self): self.__secount+=1 self.publicf ...
- python 类的私有变量和私有方法
#!/usr/bin/env python # -*- coding:utf-8 -*- # @Time : 2017/11/08 8:46 # @Author : lijunjiang # @Fil ...
- Python 私有变量的访问和赋值
首先我们这里先描述下: Python中,变量名类似__x__的,以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的(比如 __doc__, __init__等),不是priva ...
- python下划线,私有变量
转自:http://blog.sina.com.cn/s/blog_58649eb30100g4zo.html Python用下划线作为变量前缀和后缀指定特殊变量. "单下划线" ...
- Python 私有变量中两个下划线 _ _item 与 一个下划线的区别 _item
python中没有常量的说法, 但是可以通过元组实现一个常量 在python的私有变量中, 存在两个下划线 _ _item 与一个下划线 _item 的区别 前面带两个下划线的私有变量: 只能在本类中 ...
随机推荐
- 【python3】urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)>
在玩爬虫的时候,针对https ,需要单独处理.不然就会报错: 解决办法:引入 ssl 模块即可 核心代码 imort ssl ssl._create_default_https_context = ...
- vuex - 辅助函数学习
官网文档: https://vuex.vuejs.org/zh-cn/api.html 最底部 mapState 此函数返回一个对象,生成计算属性 - 当一个组件需要获取多个状态时候,将这些状态都声 ...
- Python pyQt4/pyQt5 学习笔记2(状态栏、菜单栏和工具栏)
例子:状态栏.菜单栏和工具栏 import sys from PyQt4 import QtGui class Example(QtGui.QMainWindow): def __init__(sel ...
- word2010没有“标题2、标题3”样式的解决办法
word2010没有“标题2.标题3”样式的解决办法 很多人用word的时候都喜欢用“标题1”“标题2”等样式来定义他们的文档标题,被这样定义的标题会出现在导航窗格中,使浏览起来非常方便.但是最近我发 ...
- Ajax提交表单时验证码自动验证 php后端验证码检测
本文通过源码展示如何实现表单提交前,验证码先检测正确性,不正确则不提交表单,更新验证码. 1.前端代码 index.html <!DOCTYPE html> <html> &l ...
- linux 终端输出颜色
在Linux终端下调试程序时,有时需要输出大量信息.若能控制字体的颜色和显示方式,可使输出信息对比鲜明,便于调试时观察数据. 终端的字符颜色由转义序列(Escape Sequence)控制,是文本模式 ...
- Testlink定位实例
最近在对testlink系统上做点东西,在定位部分元素时折腾了一段时间才搞定,特此记录 如下图 要定位红色框部分 一:先分析testlink页面结构,如下 如二个frame组成,一个是titlebar ...
- jdbc(1)(三)DBCP、C3P0、Proxool 、 BoneCP开源连接池的简介
简介 使用评价 项目主页 DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序用使用 可以设置最大和最小连 ...
- vue--拖动排序
https://blog.csdn.net/jx950915/article/details/79803485?from=singlemessage
- MapReduce规约
深入了解Combiners编程(相当于Map端的Reduce) 每一个map可能会产生大量的输出,combiner的作用就是在map端对输出先做一次合并,以减少传输到reducer的数据量. comb ...