实例讲解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双向链表实现实例代码
Nov 21 Python
python实现封装得到virustotal扫描结果
Oct 05 Python
Python实现的选择排序算法示例
Nov 29 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
Dec 20 Python
python进阶之多线程对同一个全局变量的处理方法
Nov 09 Python
python 提取key 为中文的json 串方法
Dec 31 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
Nov 19 Python
Python使用py2neo操作图数据库neo4j的方法详解
Jan 13 Python
Django CSRF认证的几种解决方案
Mar 03 Python
jupyter notebook 恢复误删单元格或者历史代码的实现
Apr 17 Python
Python中内建模块collections如何使用
May 27 Python
Python如何使用ElementTree解析xml
Oct 12 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
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
PHP 之Section与Cookie使用总结
2012/09/14 PHP
PHP字符串的编码问题的详细介绍
2013/04/27 PHP
在PHP中使用redis
2013/11/04 PHP
PHP实现伪静态方法汇总
2016/01/13 PHP
PHP中的self关键字详解
2019/06/23 PHP
laravel添加前台跳转成功页面示例
2019/10/22 PHP
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
javascript中DOM复选框选择用法实例
2015/05/14 Javascript
javascript实现跨域的方法汇总
2015/06/25 Javascript
JS+DIV+CSS实现仿表单下拉列表效果
2015/08/18 Javascript
jQuery常用的一些技巧汇总
2016/03/26 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
2017/12/25 jQuery
[46:59]完美世界DOTA2联赛PWL S2 GXR vs Ink 第二场 11.19
2020/11/20 DOTA
python函数缺省值与引用学习笔记分享
2013/02/10 Python
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
mac下给python3安装requests库和scrapy库的实例
2018/06/13 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
python3.8 微信发送服务器监控报警消息代码实现
2019/11/05 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
解决redis与Python交互取出来的是bytes类型的问题
2020/07/16 Python
细说CSS3中的选择符
2008/10/17 HTML / CSS
贝嫂喜欢的婴儿品牌,个性化的婴儿礼物:My 1st Years
2017/11/19 全球购物
美国温暖商店:The Warming Store
2018/12/15 全球购物
国际会议邀请函范文
2014/01/16 职场文书
高中生职业生涯规划书
2014/02/24 职场文书
个人欠款担保书
2014/05/20 职场文书
经营管理策划方案
2014/05/22 职场文书
询价采购方案
2014/06/09 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
农村党支部承诺书
2015/04/30 职场文书
酒桌上的祝酒词
2015/08/12 职场文书
利用Python实时获取steam特惠游戏数据
2022/06/25 Python