实例讲解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 07 Python
Python下使用Scrapy爬取网页内容的实例
May 21 Python
Tensorflow 同时载入多个模型的实例讲解
Jul 27 Python
python 实现一次性在文件中写入多行的方法
Jan 28 Python
安装好Pycharm后如何配置Python解释器简易教程
Jun 28 Python
Python pygame绘制文字制作滚动文字过程解析
Dec 12 Python
python多进程重复加载的解决方式
Dec 13 Python
Pytorch实现基于CharRNN的文本分类与生成示例
Jan 08 Python
django 实现手动存储文件到model的FileField
Mar 30 Python
python 解决Windows平台上路径有空格的问题
Nov 10 Python
pandas实现导出数据的四种方式
Dec 13 Python
Python使用mitmproxy工具监控手机 下载手机小视频
Apr 18 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
PHP分页显示制作详细讲解
2008/11/19 PHP
php投票系统之增加与删除投票(管理员篇)
2016/07/01 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
jquery 提交值不为空的元素示例代码
2013/05/10 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
jquery带翻页动画的电子杂志代码分享
2015/08/21 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
基于Vue3.0开发轻量级手机端弹框组件V3Popup的场景分析
2020/12/30 Vue.js
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
python中set常用操作汇总
2016/06/30 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
纯css3无js实现的Android Logo(有简单动画)
2013/01/21 HTML / CSS
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
个人简历自我评价八例
2013/10/31 职场文书
电厂厂长岗位职责
2014/01/02 职场文书
接受捐赠答谢词
2014/01/27 职场文书
后勤主管岗位职责
2014/03/01 职场文书
健康状况证明书
2014/11/26 职场文书
干部个人考察材料
2014/12/24 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
2015年班长个人工作总结
2015/04/03 职场文书
主持稿开场白
2015/06/01 职场文书
初中家长意见
2015/06/03 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书
纯CSS如何禁止用户复制网页的内容
2021/11/01 HTML / CSS
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python
mysql sql常用语句大全
2022/06/21 MySQL