实例讲解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使用Pycrypto库进行RSA加密的方法详解
Jun 06 Python
Python利用operator模块实现对象的多级排序详解
May 09 Python
django用户注册、登录、注销和用户扩展的示例
Mar 19 Python
python 基本数据类型占用内存空间大小的实例
Jun 12 Python
Python双向循环链表实现方法分析
Jul 30 Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
Jul 07 Python
Python3 无重复字符的最长子串的实现
Oct 08 Python
Python 利用邮件系统完成远程控制电脑的实现(关机、重启等)
Nov 19 Python
Python序列化pickle模块使用详解
Mar 05 Python
Python判断远程服务器上Excel文件是否被人打开的方法
Jul 13 Python
4款Python 类型检查工具,你选择哪个呢?
Oct 30 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系统上安装PHP运行环境文字教程
2010/07/19 PHP
coreseek 搜索英文的问题详解
2013/06/08 PHP
在yii中新增一个用户验证的方法详解
2013/06/20 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
php实现生成验证码实例分享
2016/04/10 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
Jquery调用webService远程访问出错的解决方法
2010/05/21 Javascript
js+css使DIV始终居于屏幕中间 左下 左上 右上 右下的代码集合
2011/03/10 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
javascript字符串与数组转换汇总
2015/05/26 Javascript
JS定义类的六种方式详解
2016/05/12 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
jQuery获取选中单选按钮radio的值
2016/12/27 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
AngularJS自定义指令之复制指令实现方法
2017/05/18 Javascript
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
Vue2.0 v-for filter列表过滤功能的实现
2018/09/07 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
vue3.0+vue-router+element-plus初实践
2020/12/02 Vue.js
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
Python3 伪装浏览器的方法示例
2017/11/23 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
Python装饰器(decorator)定义与用法详解
2018/02/09 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
Django+python服务器部署与环境部署教程详解
2020/03/30 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
2020/04/07 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
负责人任命书范本
2014/06/04 职场文书
2015年党总支工作总结
2015/05/25 职场文书
实习指导老师意见
2015/06/04 职场文书