实例讲解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的Django框架中编写错误提示页面
Jul 22 Python
Python 类的继承实例详解
Mar 25 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
关于python列表增加元素的三种操作方法
Aug 22 Python
python 接收处理外带的参数方法
Dec 03 Python
python实践项目之监控当前联网状态详情
May 23 Python
Django 模型类(models.py)的定义详解
Jul 19 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
Oct 11 Python
tensorflow实现训练变量checkpoint的保存与读取
Feb 10 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
May 26 Python
python中对二维列表中一维列表的调用方法
Jun 07 Python
python 发送邮件的四种方法汇总
Dec 02 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
怎么样可以把 phpinfo()屏蔽掉?
2006/11/24 PHP
NOT NULL 和NULL
2007/01/15 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
PHP读取大文件的类SplFileObject使用介绍
2014/04/09 PHP
php获取汉字拼音首字母的方法
2015/10/21 PHP
PHP新特性详解之命名空间、性状与生成器
2017/07/18 PHP
PHP反射基础知识回顾
2020/09/10 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
javascript 实现字符串反转的三种方法
2013/11/23 Javascript
js 时间格式与时间戳的相互转换示例代码
2013/12/25 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
node.js中的path.sep方法使用说明
2014/12/08 Javascript
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
JavaScript实现经典排序算法之插入排序
2016/12/28 Javascript
微信小程序利用co处理异步流程的方法教程
2017/05/20 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
微信小程序解除10个请求并发限制
2018/12/18 Javascript
vue使用代理解决请求跨域问题详解
2019/07/24 Javascript
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
python 实时遍历日志文件
2016/04/12 Python
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
萨克斯第五大道的折扣店:Saks Fifth Avenue OFF 5TH
2016/08/25 全球购物
国庆节文艺活动方案
2014/02/03 职场文书
论文评语大全
2014/04/29 职场文书
酒店端午节活动方案
2014/08/26 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
2015年体育教师个人工作总结
2015/05/12 职场文书
2015年档案管理员工作总结
2015/05/13 职场文书
用Python将GIF动图分解成多张静态图片
2021/06/11 Python
Python 正则模块详情
2021/11/02 Python
微软官方消息,在 2023 年 4 月 11 日之后微软将不再为 Office 2013 和 Skype for Business 2015 提供安全更新
2022/04/21 数码科技