受保护的封装 protected

补充内容:封装

私有化封装 private
受保护的封装 protected
公共的封装 public


注意:python目前不支持设定受保护的成员,但是开发者由约定的使用方式

受保护的封装:在成员名称前面加一个下划线
受保护的目的:仅允许成员在当前类/对象或者子类/子对象中访问,外部禁止

-----------------------------------------------------------------------------------------------------
                   类/对象内      子类/子对象中     类/对象外
私有化         √                        ×                           ×

受保护         √                        √                           √(实际上不允许)

公共的         √                        √                           √

 

实例

 1 #父类
 2 class LiuBei:
 3     #属性
 4     __wife = ('甘夫人','糜夫人','孙尚香')#私有化
 5     _money = '100'#受保护(不是语法是约定)
 6     skin = '黄色'# 公共
 7     #方法
 8     #吃饭
 9     def eat(self):#公共的
10         print('打死我***也不吃~ 真香啊~')
11     #学习
12     def __study(self):#私有化
13         print('好好学习天天向上')
14     #做鞋
15     def _makeshoes(self):
16         print('编草鞋')
17     #内部测试受保护成员
18     def test(self):
19         print(self._money)
20         self._makeshoes()
21 #子类
22 class LiuShan(LiuBei):
23     pass
24 
25 #检测私有化和公共的封装
26 #实例化对象
27 ls = LiuShan()
28 #print(ls.wife) #私有成员无法在子类.子对象中调用
29 #ls.study()#私有成员无法在子类.子对象中调用
30 #输出结果:AttributeError: 'LiuShan' object has no attribute 'wife'
31 
32 print(ls.skin)#公共的成员可以在子类/子对象中调用
33 #输出结果:黄色
34 ls.eat()#公共的成员可以在子类/子对象中调用
35 #输出结果:打死我***也不吃~ 真香啊~
36 
37 #调用受保护的成员
38 #实例化刘备的对象
39 lb = LiuBei()
40 
41 #在类和对向外(随便访问)
42 print(lb._money)
43 #输出结果:100
44 lb._makeshoes()
45 #输出结果:编草鞋
46 
47 #在类和对象的内部(随便访问)
48 lb.test()
49 '''
50 输出结果:
51 100
52 编草鞋
53 '''
54 
55 #约定受保护的封装,不要这样去访问
56 #在子类和子对象中
57 print(ls._money)
58 #输出结果:100
59 ls._makeshoes()
60 #输出结果:编草鞋

 

转载于:https://www.cnblogs.com/lws865/p/10852059.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值