实例讲解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判断windows隐藏文件的方法
Mar 21 Python
python获取标准北京时间的方法
Mar 24 Python
AI人工智能 Python实现人机对话
Nov 13 Python
python MysqlDb模块安装及其使用详解
Feb 23 Python
对Python中的@classmethod用法详解
Apr 21 Python
十分钟利用Python制作属于你自己的个性logo
May 07 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
Apr 01 Python
python实现大文本文件分割
Jul 22 Python
Python While循环语句实例演示及原理解析
Jan 03 Python
浅谈python多线程和多线程变量共享问题介绍
Apr 17 Python
Python读取yaml文件的详细教程
Jul 21 Python
Python合并pdf文件的工具
Jul 01 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
PHP+DBM的同学录程序(4)
2006/10/09 PHP
深入探讨:Nginx 502 Bad Gateway错误的解决方法
2013/06/03 PHP
php创建基本身份认证站点的方法详解
2013/06/08 PHP
用PHP代替JS玩转DOM的思路及示例代码
2014/06/15 PHP
php定期拉取数据对比方法实例
2019/09/22 PHP
解放web程序员的输入验证
2006/10/06 Javascript
详细讲解JS节点知识
2010/01/31 Javascript
新手常遇到的一些jquery问题整理
2010/08/16 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
js获取location.href的参数实例代码
2013/08/02 Javascript
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
jQuery中before()方法用法实例
2014/12/25 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
React Native自定义控件底部抽屉菜单的示例
2018/02/08 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
Django项目开发中cookies和session的常用操作分析
2018/07/03 Python
python实现浪漫的烟花秀
2019/01/30 Python
Python Flask 搭建微信小程序后台详解
2019/05/06 Python
Python数据可视化:饼状图的实例讲解
2019/12/07 Python
python标识符命名规范原理解析
2020/01/10 Python
应用电子技术专业个人求职信
2013/09/21 职场文书
毕业生求职简历中的自我评价
2013/10/18 职场文书
历史学专业推荐信
2013/11/06 职场文书
三严三实对照检查材料
2014/08/25 职场文书
小学生勤俭节约演讲稿
2014/08/28 职场文书
活动总结格式
2014/08/30 职场文书
2014年街道办事处工作总结
2014/12/11 职场文书
青年文明号申报材料
2014/12/23 职场文书
通报表扬范文
2015/01/17 职场文书
旷工辞退通知书
2015/04/17 职场文书
Vue + iView实现Excel上传功能的完整代码
2021/06/22 Vue.js
python实现MD5进行文件去重的示例代码
2021/07/09 Python
Python测试框架pytest高阶用法全面详解
2022/06/01 Python