美文网首页
*Python面向对象--封装

*Python面向对象--封装

作者: 恶人未满 | 来源:发表于2017-07-26 22:01 被阅读0次

所谓封装就是对外部世界隐藏对象的工作细节

今天老师讲了四个例子,由简入繁,由浅入深详细分析了封装的意义及用法

例1:

>>>classPerson:#定义一个person类

>>>def__init__(self, name, age):初始化对象的属性

 >>>self.name=name

  >>> self.age=age

>>>p=Person("tom",12)#声明一个对象

>>>print(p.name, p.age)#打印

>>>p.age=13#Python中可对属性操作

>>>print(p.age)

第一个例子说明Python的简单封装并不稳定,属性可被更改

例2:

>>>classHero:

>>>def__init__(self, name, age):例2大体和例1 差不多但是不同的是属性封装成__(属性名)

>>>self.__name=name               这种是把属性定义成私有属性在类外不可任意修改或其他操作

>>>self.__age=age                    想对私有属性操作需要声明特定的函数

>>>defget_name(self):#定义get函数,使其能在类外获取属性的值

>>>returnself.__name

>>>defset_name(self, name):#定义set函数,使其能在类外修改属性的值

>>>self.__name=name

>>>h=Hero("jack",11)

>>>print(h.get_name())

>>>h.set_name("fuck")

>>>print(h.get_name())

例2主要是对例1 的强化封装,能很好的隐藏对象的属性,不能轻易获取和修改

例3:

>>>classMan:

>>>def__init__(self, name, age):

>>>self.__name=name#例3是对例2的升华,在原有的基础上增加了@property和

>>>self.__age=age        @().setter把函数转为对象使用,更好的隐藏了工作细节

>>>@property                 封装的更加隐秘

>>>defget_name(self):

>>>returnself.__name

>>>@get_name.setter

>>>defset_name(self, name):

>>>self.__name=name

>>>m=Man("lll",18)

>>>print(m.get_name)

>>>m.set_name="sdbfdb"

>>>print(m.get_name)

本例子不但把属性隐藏了,还隐藏了工作细节,在类外调用时把函数隐藏,封装的更加严密

例4:

>>>classWoman:

>>>def__init__(self, name, age):

>>>self.__name=name#这是最终版,在例3 的基础上增加了函数的重载这时当我们调用了

>>>self.__age=age       函数,但是在函数外表现出来的确实对属性的更改,增加了代码的

>>>@property               保密性

>>>defname(self):

>>>returnself.__name

>>>@name.setter

>>>defname(self, name):

>>>self.__name=name

>>>w=Woman('hello',1)

>>>print(w.name)

>>>w.name="wold"

>>>print(w.name)

本例子增加了函数的重载,真正意义上隐藏了对象的工作细节,实现了封装,每个类都有自己的构造方法__init__,我对每一个类都进行实例化一个对象;每个对象创建的时候会自动调用自己的__init__方法封装不同的内容

这里我们把重点放在这个@property这里,在C++或者Java中,我们经常会遇到setter和getter,在这里@property的作用类似,需要注意的是,这里面的同一属性的三个函数要同名(本例中指的是name),当我们在运用的时候,就可以根据需要,例如是否只读等进行设置

相关文章

  • 营销比赛二三事

    Python面向对象编程三大特性调研 Python面向对象之封装 在Python中,没有类似 private 之类...

  • python面向对象特性之封装

    面向对象——封装 一、概述 Python面向对象的三大特性:封装、继承和多态。 封装:在类中对数据的赋值、内部调用...

  • Python面向对象封装

    面向对象——封装 一、概述 Python面向对象的三大特性:封装、继承和多态。 封装:在类中对数据的赋值、内部调用...

  • Python GUI与面向对象

    Python GUI与面向对象 Python面向对象 对象是数据与其能实施的操作的封装结构 类是对于实例对象的抽象...

  • python 面向对象-封装

    封装演示01 前面两种封装方法对于数据的安全保护不够强烈,应为对象可以直接通过objeect.name='like...

  • *Python面向对象--封装

    所谓封装就是对外部世界隐藏对象的工作细节 今天老师讲了四个例子,由简入繁,由浅入深详细分析了封装的意义及用法 例1...

  • Python 面向对象 封装

    Python面对对象封装 1.1 面向过程和面向对象 根据操作数据的函数或语句块来设计程序的过程,叫做面向过程编程...

  • Python面向对象-封装

    前言 在 Python入门基础中,可能有些知识点没听懂。听,你不一定能完全听懂,但是还是那件事,不放弃,不抛弃,一...

  • 22.Python编程:封装、继承、多态

    前面学习了面向过程和面向对象的概念,又学习了Python中类和对象的相关知识,其中面向对象最大的特征是:封装、继承...

  • 类面对对象、封装 继承 多态

    Python——类、面向对象,封装 继承 多态 面向过程:根据业务逻辑从上到下写代码面向对象:将数据与函数绑定到一...

网友评论

      本文标题:*Python面向对象--封装

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