实例讲解Python中的私有属性
作者:junjie 时间:2023-11-10 16:41:46
在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,私有属性
0
投稿
猜你喜欢
javascript实现简单的可随机变色网页计算器示例
2024-04-16 09:37:07
玩转CSS3色彩[译]
2010-01-13 13:02:00
基于javascript的Form表单验证
2024-04-10 16:20:03
如何制作一个从Access数据库中读取记录的下拉菜单?
2010-06-29 21:23:00
django框架自定义模板标签(template tag)操作示例
2023-11-06 16:05:59
浅谈python迭代器
2023-07-21 21:56:47
Python中的特殊语法:filter、map、reduce、lambda介绍
2021-04-26 12:39:57
浅谈JavaScript函数参数的可修改性问题
2024-05-02 17:20:29
使用Python打造一款间谍程序的流程分析
2021-11-21 08:12:32
python图片格式转换脚本
2023-06-20 04:18:06
小记一次mysql主从配置解决方案
2024-01-12 18:28:42
使用Python中OpenCV和深度学习进行全面嵌套边缘检测
2021-04-21 10:21:34
asp利用XMLHTTP无刷新自动更新数据
2007-08-23 13:16:00
Python3读取和写入excel表格数据的示例代码
2022-01-21 10:33:55
PHP完全二叉树定义与实现方法示例
2023-07-04 10:49:10
Oracle 11g安装错误提示未找到wfmlrsvcapp.ear的解决方法
2023-07-14 14:31:52
Python之读取TXT文件的方法小结
2022-10-25 16:11:34
pytorch中model.named_parameters()与model.parameters()解读
2023-02-03 23:47:36
基于python使用OpenCV进行物体轮廓排序
2022-06-27 23:25:01
python if not in 多条件判断代码
2023-06-29 17:40:57