实例讲解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 基础学习第二弹 类属性和实例属性
Aug 27 Python
Python中非常实用的一些功能和函数分享
Feb 14 Python
Python聚类算法之DBSACN实例分析
Nov 20 Python
python 常用的基础函数
Jul 10 Python
python基础学习之如何对元组各个元素进行命名详解
Jul 12 Python
Python实现拷贝/删除文件夹的方法详解
Aug 29 Python
python查看模块,对象的函数方法
Oct 16 Python
django formset实现数据表的批量操作的示例代码
Dec 06 Python
Python中如何添加自定义模块
Jun 09 Python
python实现三壶谜题的示例详解
Nov 02 Python
python实现图像高斯金字塔的示例代码
Dec 11 Python
Python实现微信表情包炸群功能
Jan 28 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(3)
2006/10/09 PHP
PHP 第二节 数据类型之数值型
2012/04/28 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
PHP 7安装调试工具Xdebug扩展的方法教程
2017/06/17 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
javascript中的onkeyup和onkeydown区别介绍
2013/04/28 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
2015/02/17 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
深入理解React高阶组件
2017/09/28 Javascript
在Swiper内如何制作CSS3动画效果示例代码
2017/12/07 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
vant中的toast层级改变操作
2020/11/04 Javascript
vue 实现基础组件的自动化全局注册
2020/12/25 Vue.js
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python的Django框架使用入门指引
2015/04/15 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
python实现从wind导入数据
2019/12/03 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
python中turtle库的简单使用教程
2020/11/11 Python
python中reload重载实例用法
2020/12/15 Python
详解HTML5中的元素与元素
2015/08/17 HTML / CSS
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
选购世界上最好的美妆品:Cult Beauty
2017/11/03 全球购物
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
Moda Operandi官网:美国奢侈品电商,海淘秀场T台同款
2020/05/26 全球购物
介绍一下mysql的日期和时间函数
2013/03/28 面试题
银行安全保卫工作总结
2015/08/10 职场文书
初三化学教学反思
2016/02/22 职场文书
高中政治教师教学反思
2016/02/23 职场文书