实例讲解Python中的私有属性


Posted in Python onAugust 21, 2014

在Python中可以通过在属性变量名前加上双下划线定义属性为私有属性,如例子:

#! encoding=UTF-8

 

class A:

    def __init__(self):

         

        # 定义私有属性

        self.__name = "wangwu"

         

        # 普通属性定义

        self.age = 19

         

a = A()

 

# 正常输出

print a.age

 

# 提示找不到属性

print a.__name

执行输出:
Traceback (most recent call last):

  File "C:\Users\lee\Documents\Aptana Studio 3 Workspace\testa\a.py", line 19, in <module>

    print a.__name

AttributeError: A instance has no attribute '__name'

访问私有属性__name时居然提示找不到属性成员而不是提示权限之类的,于是当你这么写却不报错:
#! encoding=UTF-8

 

class A:

    def __init__(self):

         

        # 定义私有属性

        self.__name = "wangwu"

         

        # 普通属性定义

        self.age = 19

         

 

a = A()

 

a.__name = "lisi"

print a.__name

执行结果:
1
lisi
在Python中就算继承也不能相互访问私有变量,如:
#! encoding=UTF-8

 

class A:

    def __init__(self):

         

        # 定义私有属性

        self.__name = "wangwu"

         

        # 普通属性定义

        self.age = 19

         

 

class B(A):

    def sayName(self):

        print self.__name

         

 

b = B()

b.sayName()

执行结果:
Traceback (most recent call last):

  File "C:\Users\lee\Documents\Aptana Studio 3 Workspace\testa\a.py", line 19, in <module>

    b.sayName()

  File "C:\Users\lee\Documents\Aptana Studio 3 Workspace\testa\a.py", line 15, in sayName

    print self.__name

AttributeError: B instance has no attribute '_B__name'

或者父类访问子类的私有属性也不可以,如:
#! encoding=UTF-8

 

class A:

    def say(self):

        print self.name

        print self.__age

         

 

class B(A):

    def __init__(self):

        self.name = "wangwu"

        self.__age = 20

 

b = B()

b.say()

执行结果:
wangwu

Traceback (most recent call last):

  File "C:\Users\lee\Documents\Aptana Studio 3 Workspace\testa\a.py", line 15, in <module>

    b.say()

  File "C:\Users\lee\Documents\Aptana Studio 3 Workspace\testa\a.py", line 6, in say

    print self.__age

AttributeError: B instance has no attribute '_A__age'
Python 相关文章推荐
Python外星人入侵游戏编程完整版
Mar 30 Python
Python程序员面试题 你必须提前准备!(答案及解析)
Jan 23 Python
Python yield与实现方法代码分析
Feb 06 Python
Numpy中的mask的使用
Jul 21 Python
python 将有序数组转换为二叉树的方法
Mar 26 Python
python使用Plotly绘图工具绘制水平条形图
Mar 25 Python
python3射线法判断点是否在多边形内
Jun 28 Python
利用Python复制文件的9种方法总结
Sep 02 Python
在OpenCV里使用Camshift算法的实现
Nov 22 Python
PyCharm 在Windows的有用快捷键详解
Apr 07 Python
Pytorch实现将模型的所有参数的梯度清0
Jun 24 Python
用python进行视频剪辑
Nov 02 Python
Python创建日历实例
Aug 21 #Python
Python实现批量把SVG格式转成png、pdf格式的代码分享
Aug 21 #Python
python生成日历实例解析
Aug 21 #Python
MySQLdb ImportError: libmysqlclient.so.18解决方法
Aug 21 #Python
Python中除法使用的注意事项
Aug 21 #Python
Python中dictionary items()系列函数的用法实例
Aug 21 #Python
Python 不同对象比较大小示例探讨
Aug 21 #Python
You might like
Windows中安装Apache2和PHP4权威指南
2006/11/18 PHP
php中截取字符串支持utf-8
2007/01/18 PHP
推荐一篇入门级的Class文章
2007/03/19 PHP
phpmyadmin 3.4 空密码登录的实现方法
2010/05/29 PHP
基于python发送邮件的乱码问题的解决办法
2013/04/25 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
Webkit的跨域安全问题说明
2011/09/13 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
jQuery仿Excel表格编辑功能的实现代码
2013/05/01 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
简介AngularJS的HTML DOM支持情况
2015/06/17 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
举例讲解Python中的算数运算符的用法
2015/05/13 Python
详解在Python程序中自定义异常的方法
2015/10/16 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
HTML5使用DOM进行自定义控制示例代码
2013/06/08 HTML / CSS
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
string = null 和string = ''的区别
2013/04/28 面试题
十月份红领巾广播稿
2014/01/22 职场文书
2014年导购员工作总结
2014/11/18 职场文书
欠条样本
2015/07/03 职场文书
大学生十八大感想
2015/08/11 职场文书
大学生志愿者心得体会
2016/01/15 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
Python开发五子棋小游戏
2022/05/02 Python