私有化封装

‘’’
面向对象的三大特征:(封装,继承,多态)
封装特征:在实际工作中很多的成员不方便为对象之外的访问或者操作,所以需要限定一下
是否可以操作成员。
封装特性就是对成员操作进行限制的保护性措施
面向对象的封装分为三个级别:
1. 私有化封装 private
2. 受保护级别的封装(继承章节讲解) protected
3. 公共的封装 public
对象/类成员的访问:
1. 当前类/对象内部访问(在类的结构内部)
2. 类和对象的外部访问 (在类的结构外部)
3. 类和对象的子类和子对象的访问(在类的结构外部,在子类/对象的内部)

私有化封装:
    方法:在成员属性或者方法名称之前,添加双下划线,就可以私有化成员。
    特征:私有化的成员属性或者方法,无法在类和对象的外部访问
          私有化成员仅允许在类和对象的内部进行访问

公共的封装:
    方法:任何成员在没有进行私有化操作的时候默认都是公共封装。
    特征:公共的封装成员属性和方法,在任何位置都可以被访问

Python封装的迷幻:
    其实Python没有实现和其它语言一样的面向对象封装的策略(还不是很完备)
    私有化封装采用了name mangling(改名)的策略实现的私有化操作(并不是真正的私有化)

改名策略:将原有成员属性或者方法名 修改为_类名__成员名

‘’’
#私有化封装例子:
#声明一个小明的类:
class XiaoMing:
#成员属性
name = ‘小明’ # 允许别人使用
__sex = ‘男人’ # 不允许别人访问
age = ‘18’ # 允许别人使用
__heart = ‘黑色的心’ # 不允许别人访问
__kidney = ‘严重透支了肾’ # 不允许别人访问

#成员方法
def talk(self): # 允许别人使用
print(‘我会唱很难听的歌’)

def sing(self):                      # 允许别人使用
    print('我喜欢吃隆江猪脚饭')

def __wash(self):                     # 不允许别人使用
    print('还不爱做运动')

def aa(self):                    # 在类或者对象的内部访问私有化的成员
    print('我的名字叫:'+ self.name)
    print('我是一个' + self.__sex)
    self.sing()
    self.talk()
    self.__wash()
    print('我今年才18岁,可是我已经开始衰老,因为:'+ self.__kidney)
    print('由于每次吃饭不请老大吃肉,我的心已经变成了:'+self.__heart)

#正常途径访问私有化对象的成员属性和方法:

bb = XiaoMing()
bb.aa()

#破解访问私有化对象的成员属性和方法:
cc = XiaoMing()
print(cc._XiaoMing__kidney) #访问类中的私有化成员

cc._XiaoMing__wash() #访问了对象中的私有化成员

#注意:self过的成员无法访问

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值