实例讲解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 相关文章推荐
python3.3教程之模拟百度登陆代码分享
Jan 16 Python
python获取当前计算机cpu数量的方法
Apr 18 Python
python实现图片变亮或者变暗的方法
Jun 01 Python
Python异常对代码运行性能的影响实例解析
Feb 08 Python
Python3 中把txt数据文件读入到矩阵中的方法
Apr 27 Python
对Python中for复合语句的使用示例讲解
Nov 01 Python
Django Celery异步任务队列的实现
Jul 24 Python
详解django实现自定义manage命令的扩展
Aug 13 Python
python3 tkinter实现添加图片和文本
Nov 26 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
Apr 23 Python
Python爬取微信小程序通用方法代码实例详解
Sep 29 Python
Python matplotlib绘制雷达图
Apr 13 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
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
2014/07/01 PHP
PHP封装的验证码工具类定义与用法示例
2018/08/22 PHP
JS无限树状列表实现代码
2011/01/11 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
script不刷新页面的联动前后代码
2013/09/18 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
jquery实现九宫格大转盘抽奖
2015/11/13 Javascript
Node.js静态文件服务器改进版
2016/01/10 Javascript
angular分页指令操作
2017/01/09 Javascript
Angular.js基础学习之初始化
2017/03/10 Javascript
原生js实现验证码功能
2017/03/16 Javascript
vuejs 单文件组件.vue 文件的使用
2017/07/28 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
详解js删除数组中的指定元素
2018/10/31 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
微信小程序纯文本实现@功能
2020/04/08 Javascript
vite2.0+vue3移动端项目实战详解
2021/03/03 Vue.js
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
python二分法实现实例
2013/11/21 Python
Python中List.count()方法的使用教程
2015/05/20 Python
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
Python绘制组合图的示例
2020/09/18 Python
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
美国机场停车位预订:About Airport Parking
2018/03/26 全球购物
大学自荐信
2013/12/12 职场文书
党员违纪检讨书
2014/02/18 职场文书
请假条格式范文
2014/04/10 职场文书
企业形象策划方案
2014/05/29 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书
观后感格式
2015/06/19 职场文书
会计手工模拟做账心得体会
2016/01/22 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书
导游词之上饶龟峰
2019/10/25 职场文书