实例讲解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字符遍历的艺术
Sep 06 Python
Python类的动态修改的实例方法
Mar 24 Python
python 列表,数组和矩阵sum的用法及区别介绍
Jun 28 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
Jul 11 Python
Python 做曲线拟合和求积分的方法
Dec 29 Python
Python实现SQL注入检测插件实例代码
Feb 02 Python
详解python中init方法和随机数方法
Mar 13 Python
Django对数据库进行添加与更新的例子
Jul 12 Python
python的pygal模块绘制反正切函数图像方法
Jul 16 Python
利用python计算windows全盘文件md5值的脚本
Jul 27 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
Aug 18 Python
Django 自动生成api接口文档教程
Nov 19 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安全配置方法
2007/06/16 PHP
PHP防止post重复提交数据的简单例子
2014/06/07 PHP
php实现的mongoDB单例模式操作类
2018/01/20 PHP
Javascript之旅 对象的原型链之由来
2010/08/25 Javascript
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
jquery获取元素值的方法(常见的表单元素)
2013/11/15 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
javascript异步编程代码书写规范Promise学习笔记
2015/02/11 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
微信小程序之数据双向绑定与数据操作
2017/05/12 Javascript
jQuery返回定位插件详解
2017/05/15 jQuery
JQuery.dataTables表格插件添加跳转到指定页
2017/06/09 jQuery
详解用vue.js和laravel实现微信授权登陆
2017/06/23 Javascript
教你用Cordova打包Vue项目的方法
2017/10/17 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
koa2 从入门到精通(小结)
2019/07/23 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
python Kmeans算法原理深入解析
2019/08/23 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
Python3之外部文件调用Django程序操作model等文件实现方式
2020/04/07 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
CSS3 transition 实现通知消息轮播条
2020/10/14 HTML / CSS
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
汉语专业应届生求职信
2013/10/01 职场文书
灰雀教学反思
2014/04/28 职场文书
安全教育演讲稿
2014/05/09 职场文书
公务员中国梦演讲稿
2014/08/19 职场文书
2019年市场部个人述职报告(三篇)
2019/10/23 职场文书
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python
vue实现Toast组件轻提示
2022/04/10 Vue.js