7 """
8 封装是面对对象的三大特征之一(另外两个是集成和多态),它指的是将对象> 的信息隐藏在对象的内部,不允许外部程序直接访问对象内部信息,而是通> 过该类锁提供的方法来实现对内部信息的操作和访问
9 封装是面对对象编程语言对客观世界的模拟。对一个类或者对象进行良好的> 封装可以达到以下目的:
10 1隐藏类的实现细节
11 2让使用者稚嫩沟通过实现预定的方法来访问数据,从而可以在该方法中加> 入控制逻辑,限制对属性的不合理访问
12 3可进行数据检查,从而有利于保证对象信息的完整性
13 4便于修改,提高代码的可维护性
14 5将兑现搞得属性和实现细节隐藏起来,不允许外部直接访问
15 6把方法暴露出来,让方法来控制对这些属性进行安全的访问和操作
16
17 """
18 class user(object):
19 def __hide(self):
20 print('示范隐藏的hide方法')
21 def getname(self):
22 return self.__name
23 def setname(self,name):
24 if len(name) < 3:
25 raise Exception("不符合标准")
26 self.__name = name
27 """
28 读操作-getname()方法来实现
29 写操作-setname()方法来实现
30 """
31 name = property(getname,setname)
32 def setage(self,age):
33 self.__age = age
34 def getage(self):
35 return self.__age
36 """
37 读操作-getage()方法来实现
38 写操作-setage()方法来实现
39 """
40 age = property(getage,setage)
41
42 u = user()
43 """
44 u.name = 'ff'
45 这个程序试图将name属性赋值为ff,这个字符串的长度为2不符合我们所设定
的赋值标准,则会抛出错误
46 Traceback (most recent call last):
47 File "test_class_packkeage.py", line 43, in <module>
48 u.name = 'ff'
49 File "test_class_packkeage.py", line 25, in setname
50 raise Exception("不符合标准")
51 Exception: 不符合标准
52 """
53 u.name = 'fff'#符合设定的标准
54 """
55 u.__hide()
56 __hide()方法是隐藏的,如果支架调用则会报错
57 Traceback (most recent call last):
58 File "test_class_packkeage.py", line 54, in <module>
59 u.__hide()
60 AttributeError: 'user' object has no attribute '__hide'
61 python其实没有真正的隐藏机制,双下划线只是python的一个小技巧,pytho n会偷偷的改变以双下划线开头的属性名或者方法名,会在这些属性名和方法
名前面添加_user__hide()
62 """
63 u._user__hide()
64 #示范隐藏的hide方法
65 #对隐藏的属性进行赋值
66 u._user__name = "dd"
67 #通过这种方式可以绕过我们所设定的检查机制不会抛出错误
68

总结:python并没有提供真正的隐藏机制,如果程序希望隐藏类中的某些属性或者方法,那么只要在该成员的前面加上__.不过我们要知道的是,即使通过这种机制实现了隐藏,我们也可以绕过这些隐藏来调用这些成员

最新文章

  1. Vmware无法获取快照信息 锁定文件失败
  2. EasyUI---tree
  3. web 页面上纯js实现按钮倒计数功能
  4. bootstrap表格内容跑到表格外面的处理办法
  5. 卸载移动硬盘出现 device is busy
  6. 【POJ】【2104】区间第K大
  7. Chess----&gt;简单命令框象棋(人VS人)
  8. PHP --字符串编码转换(自动识别原编码)
  9. Python upper()方法
  10. Java中for_each循环的使用
  11. SpringCloud学习系列之六 ----- 路由网关Zuul基础使用教程
  12. 前端入门25-福音 TypeScript
  13. django xadmin多对多字段过滤(含filter的反向查询)
  14. log4j2自定义Appender(输出到文件/RPC服务中)
  15. [POI2015]CZA
  16. Charles抓取https包
  17. git常用命令小记
  18. 洛咕 P4131 [WC2005]友好的生物
  19. url参数用&amp;拼接并且按照字母顺序排序方法
  20. ios 在https情况下,使用webview加载url出错的解决方法 ios9 适配问题

热门文章

  1. 脚本化CSS(通过JS来间接操作CSS)
  2. ZOJ 3430 Detect the Virus(AC自动机 + 模拟)题解
  3. 谈一谈phar 反序列化
  4. μC/OS-III---I笔记1---概述
  5. gradle中的增量构建
  6. ECharts Pie All In One
  7. Teadocs &amp; markdown website
  8. TypeScript 如何编写类库声明文件 .d.ts
  9. c++ x86_x64挂钩函数 传递寄存器表
  10. java中的桥接方法