美文网首页
7.26学习 面向对象(中)

7.26学习 面向对象(中)

作者: 杰罗尼莫030 | 来源:发表于2017-07-26 21:54 被阅读0次

封装

面向对象:是一种编程思想,是通过将项目中的数据封装成不同的对象,通过对象和对象之间互相调用完成一定的功能的处理思路,面向对象的编程思想能更好的提高代码的复用性和功能的扩展性。

面向对象的开发步骤(OO:Object Oriented)

OOA:面向对象的需求分析_分析解决问题的过程中,都有什么数据,有什么处理流程,数据就会被封装成对象,处理流程就会被封装成对象的方法
OOD:面向对象的代码设计
OOP:面向对象程序开发
OOT:面向对象的程序测试

面向对象的特征:

从生活中抽象出来的一种解决问题的思路,还原生活
封装:私有化
继承:子承父业
多态:角色扮演

面向对象的特征:封装

面向对象的封装:
  1. 将零散的数据,包含在一个类型中,统一管理(零散的数据—零碎的东西,箱子-类型)
  • 将零散的数据,包含在一个类型中
  • 定义了一个商品类型,封装和商品有关系的数据
  1. 将对象敏感的数据,封装在类的内部,不让外界直接访问;而是通过定义的set/get方法来间接访问内部的数据的过程,此时,就可以在set/get方法中,添加条件限制代码!
  • 属性私有化,才能让外界不能直接访问
  • 在p2和p3中,约定了以一个下划线开头的变量,是私有变量,外界不要直接使用
  • p3中,要求两个下划线开头的属性,表示当前类的私有属性,外界不能访问
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):
        if age >=0 and age <= 100:
            self.__age = age
        else:
            print("设置的年龄不合法...")
    def get_age(self):
        return self.__age
    def __str__(self):
        return "姓名:%s;年龄:%s" % (self.__name, self.__age)p = Person("tom", 12)print(p)p.set_age(1200)print(p)
封装实现的步骤
完成一个类的定义
所有属性私有化
给每个属性提供set/get方法

给get方法上添加@property注解,就可以让get方法当成属性进行直接取值操作了

其次,@property同时它会自动生成一个@get方法名称.setter注解,将@get方法名称.setter注解写在set方法上,就可以让set方法进行直接赋值操作了

class Person(object):
    def __init__(self, name):
        self.__name = name;
    @property
    def get_name(self):
        return self.__name
    @get_name.setter
    def set_name(self, name):
        self.__name = name
# 创建对象
p = Person("tom")
print(p.get_name)
p.set_name = "jerry"
print(p.get_name)
# 执行结果
~ tom
~ jerry

注解的同时,还可以给set、get函数重载。这样隐藏了代码底层的实现,调用者可以简易调用。但同时,也让代码的可读性部分降低。毕竟,是相同的函数名,而且还使它变成了属性的操作。

class Person(object):
    def __init__(self, name):
        self.__name = name;
    @property
    def name(self):
        return self.__name
    @name.setter
    def name(self, name):
        self.__name = name
# 创建对象
p = Person("tom")
print(p.name)
p.name= "jerry"
print(p.name)
# 执行结果
~ tom
~ jerry

__slots__可以封装对象的属性

相关文章

  • 7.26学习 面向对象(中)

    封装 面向对象:是一种编程思想,是通过将项目中的数据封装成不同的对象,通过对象和对象之间互相调用完成一定的功能的处...

  • 20-OOP类与对象

    面向对象 Object Oriented 学习面向对象:XXOO 面向对象的学习: 面向过程和面向对象的区别: 面...

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

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

  • 面向对象

    了解什么是面向对象 首先,我们学习面向对象,要了解什么是面向对象,面向对象的重要概念:类,对象。 面向对象提出的这...

  • 2018-01-18

    js中的面向对象核心 js是基于对象的编程语言,在后面的学习中我们通过一种模式使其转化成为面向对象的语言。js面向...

  • python面向对象学习笔记-01

    学习笔记 # 0,OOP-Python面向对象 - Python的面向对象 - 面向对象编程 - 基础 -...

  • 好程序员web前端学习路线之Javascript面向对象

    好程序员web前端学习路线之Javascript面向对象,面向对象是使用对象,面向对象开发就是使用对象开发。 面向...

  • Python精简入门学习(十四)

    Python精简入门学习之面向对象(oop) -面向对象 -类和对象

  • 面向对象

    面向对象 是一种计算机编程架构 ,学习面向对象则要深刻了解其中的奥秘, 学习面向对象则要有面向对象的思 想,万...

  • 面向对象

    为什么要学习面向对象(面向对象思想) 面向对象奇数是目前流行的系统设计开发技术,它包括面向对象分析和面向对象程序设...

网友评论

      本文标题:7.26学习 面向对象(中)

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