实例讲解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动态加载变量示例分享
Feb 17 Python
Python常用的爬虫技巧总结
Mar 28 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
Aug 18 Python
Flask配置Cors跨域的实现
Jul 12 Python
200行python代码实现2048游戏
Jul 17 Python
基于 Django 的手机管理系统实现过程详解
Aug 16 Python
Python数据库小程序源代码
Sep 15 Python
python实现while循环打印星星的四种形状
Nov 23 Python
python从zip中删除指定后缀文件(推荐)
Dec 05 Python
Python多线程thread及模块使用实例
Apr 28 Python
浅谈python 类方法/静态方法
Sep 18 Python
正确的理解和使用Django信号(Signals)
Apr 14 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调用数据库的存贮过程
2006/10/09 PHP
最小化数据传输――在客户端存储数据
2006/10/09 PHP
ezSQL PHP数据库操作类库
2010/05/16 PHP
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
CI(CodeIgniter)框架配置
2014/06/10 PHP
php生成网页桌面快捷方式
2017/05/05 PHP
PHP后端银联支付及退款实例代码
2017/06/23 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
2020/01/04 PHP
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
浅谈Javascript实现继承的方法
2015/07/06 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
Angular2关于@angular/cli默认端口号配置的问题
2017/07/15 Javascript
详解如何在Vue项目中导出Excel
2019/04/19 Javascript
django中使用vue.js的要点总结
2019/07/07 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
BootstrapValidator实现表单验证功能
2019/11/08 Javascript
基于javascript实现贪吃蛇小游戏
2019/11/25 Javascript
vue动态渲染svg、添加点击事件的实现
2020/03/13 Javascript
使用 UniApp 实现小程序的微信登录功能
2020/06/09 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
python学习--使用QQ邮箱发送邮件代码实例
2019/04/16 Python
python将视频转换为全字符视频
2019/04/26 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
2020/03/24 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
Python datetime模块的使用示例
2021/02/02 Python
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
党的群众路线教育实践活动先进个人材料
2014/12/24 职场文书
JAVA API 实用类 String详解
2021/10/05 Java/Android