实例讲解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程序语言快速上手教程
Jul 18 Python
python基础教程之常用运算符
Aug 29 Python
python分析nignx访问日志脚本分享
Feb 26 Python
Python探索之修改Python搜索路径
Oct 25 Python
Python实现按照指定要求逆序输出一个数字的方法
Apr 19 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
Oct 15 Python
python 实现语音聊天机器人的示例代码
Dec 02 Python
Python3.6实现带有简单界面的有道翻译小程序
Apr 16 Python
Anaconda和ipython环境适配的实现
Apr 22 Python
使用Keras 实现查看model weights .h5 文件的内容
Jun 09 Python
python打开文件的方式有哪些
Jun 29 Python
python中的装饰器该如何使用
Jun 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
使用PHP和XSL stylesheets转换XML文档
2006/10/09 PHP
php 获得汉字拼音首字母的函数
2009/08/01 PHP
PHP 远程关机实现代码
2009/11/10 PHP
PHP备份/还原MySQL数据库的代码
2011/01/06 PHP
php解析json数据实例
2014/08/19 PHP
PHP使用递归生成文章树
2015/04/21 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
IE6 fixed的完美解决方案
2011/03/31 Javascript
jQuery Validate表单验证深入学习
2015/12/18 Javascript
使用微信小程序开发前端【快速入门】
2016/12/05 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
JS实现点击循环切换显示内容的方法
2017/10/19 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
浅谈Python数据类型判断及列表脚本操作
2016/11/04 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
pandas 实现字典转换成DataFrame的方法
2018/07/04 Python
python实现连续图文识别
2018/12/18 Python
python 与服务器的共享文件夹交互方法
2018/12/27 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
Python -m参数原理及使用方法解析
2020/08/21 Python
python实现AHP算法的方法实例(层次分析法)
2020/09/09 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
2020/09/21 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
Joseph官网:英国小众奢侈品牌
2019/05/17 全球购物
《金子》教学反思
2014/04/13 职场文书
优秀学生评语大全
2014/04/25 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python
Vue Element plus使用方法梳理
2022/12/24 Vue.js