15 python-封装

1. 定义:

   在程序设计中,封装(Encapsulation)是对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,其
含义是其他程序无法调用。

2. 封装操作:

   2.1 封装的形式

       在python类中,通过限制属性和方法的名称,用来控制数据的访问权限,分为3种:

       (1)私有,属性和方法以'__'(两个下划线)开始,表明该属性和方法为私有变量,只允许类内进行访问

       (2)保护,属性和方法以'_'(一个下划线)开始,表明该属性和方法为保护变量,允许本类和子类进行访问

       (3)公有,不需要特殊要求,是python的默认方法。

        注意:

             1.类似__xxx__的,也就是以双下划线开头,并且以双下划线结尾的,是特殊的方法,可以直接访问。因此不能以这样的格式命名变量

             2. 在实际的运行中,保护变量和公有变量的使用的方式几乎没有区别,可以直接访问,但是按照约定,最好当作私有变量对待。

             3.python的私有是伪私有,因为可以通过  '_类名__变量或方法'访问,但是,不建议这样使用,因为打破了封闭性,而且在不同的解释器,可能会引起未知的错误

                      访问变量

                           

                      运行结果:

                              

                      调用方法:

                              

                        运行结果

                             


    2.2 property特性:

           

          如果想要限制属性的取值访范围的话 ,可以通过类方法进行            

              

             运行结果

                 

            但是,这样操作,需要调用函数,操作比较繁琐。因此oython提供了一种方法,解决这类问题。python装饰器@property可以将一个方法转换成想属性一样操作,示例:

               

               运行结果:

                   

          注意:

              1. @property是装饰器,可以使方法像属性一样访问

              2. @方法名.setter也是装饰器,方法的名称要和@property和自己修饰的函数相同,可以使方法像属性一样赋值

              3 @property修饰的方法会优先于同名属性的调用,注意上方的age属性和age方法(执行a.age时,调用了方法而不是属性)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值