美文网首页
面向对象的特征——封装的意义和操作过程

面向对象的特征——封装的意义和操作过程

作者: 零_WYF | 来源:发表于2017-07-27 20:45 被阅读11次

封装

将对象敏感的数据封装在类的内部,不让外界直接访问,而是通过当前类提供的set/get方法间接访问数据,此时就可以在set/get中添加限制条件进行访问数据的控制。

封装实现的步骤:

定义类型,封装零散数据【抽象的属性】

[使用__slots__属性,限制当前类的属性列表 为了代码的统一性]

所有属性私有化【属性使用双下划线开头,外界就不能直接访问这样的属性了】

给每个属性提供set/get方法,在方法中添加限制条件

class Person:

       def __init__(self,name,age):

              self.__name = name

              self.__age = age

       def set_name(self,name):

               self.__name = name

       def get_name(self):

              return self.__name

       def set_age(self,age):

              self.__age = age

       def get_age(self):

              return self.__age

p = Person("问问",11)

print(p.get_name(),p.get_age())

p.set_name("好好")

p.set_age(33)

print(p.get_name(),p.get_age())

高级封装

使用@property和@get_method.setter注解,来注释set/get方法,隐藏set/get方法的实现,让方法的使用方式和属性一致

伪方法重载:python中,默认不提供方法重载,但是在高级封装的过程中,又出现了类似方法重载的代码语法,所以~称之为伪方法重载。

class Person:

       def __init__(self,name,age):

              self.__name = name

              self.__age = age

       @property

       def get_name(self):

                 return self.__name

        @get_name.setter

        def set_name(self,name):

                  self.__name = name

         @property

         def get_age(self):

                  return self.__age

         @get_age.setter

         def set_age(self,age):

                   self.__age = age

         def eat(self):

                   print("吃1234567")

p = Person("问问",11)

print(p.get_name,p.get_age)

p.set_name = "好好"

p.set_age = 33

print(p.get_name,p.get_age)

p.eat()

对方法的封装

在封装的过程中,除了封装私有属性,还可以针对一些底层的操作方法进行私有化,将方法封装在类的内部,通过提供的一个公共方法来控制该方法的访问权限

class MsgManagerment:

          def __sen_vilidata_code(self,code):

          print("发送验证码%s" % code)

          def sen_msg(self,type,code):

                    if type == "1":

                              self.__sen_vilidata_code(code)

                              return 0

                   else:

                              return "没有权限"

m = MsgManagerment()

re = m.sen_msg("2","12345789")

print(re)

相关文章

  • 面试 | java基础

    面向对象 1、面向对象特征? 封装封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成...

  • *面向对象的特征——封装的意义和操作过程

    封装是对全局作用域中其它区域隐藏多余信息的原则。 封装听起来有些像多态,因为他们都是 抽象的原则---他们都会帮助...

  • 面向对象的特征——封装的意义和操作过程

    封装 将对象敏感的数据封装在类的内部,不让外界直接访问,而是通过当前类提供的set/get方法间接访问数据,此时就...

  • 24. 企业级开发基础5:面向对象特征(封装)

    面向对象程序设计最主要的有三个特征:封装、继承、多态 本节内容主要讲解面向对象的第一个特征:封装 1 封装的意义 ...

  • 面向对象的三个基本特征

    面向对象的三个基本特征是:封装、继承、多态。 封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要...

  • 面向对象的特征—封装的意义和操作过程(四)

    封装: 面向对象的程序设计中,某个类把所需要的数据(也可以说是类的属性)和对数据的操作(也可以说是类的行为)全部都...

  • Java基础(二)

    面向对象特征;重载和重写;静态绑定和动态绑定;抽象类和接口;包。 面向对象的特征 面向对象的三个基本特征是:封装、...

  • iOS概念知识

    面向对象的三大特征,并作简单的介绍。 面向对象的三个基本特征是:封装、继承、多态。 1.封装是面向对象的特征之一,...

  • Java的封装、继承、多态 包

    目录: 面向对象的三大特征:封装、继承、多态包方法重写superinstanceof 面向对象的三大特征:封装、继...

  • 面向对象三大特性

    面向对象 三大特性 封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事...

网友评论

      本文标题:面向对象的特征——封装的意义和操作过程

      本文链接:https://www.haomeiwen.com/subject/zwjtlxtx.html