这一周Python语言学习,记录如下。

01

面向对象编OOP

1.1 为什么学习和应用OOP?

  • 1 OOP适合更加复杂的需求分析和项目开发。

  • 2 OOP具有更强大的封装能力。

  • 3 OOP相比于面向过程编程(OPP),是另一种编程思维,从谁来做思考需求分析和代码设计与开发

  • 4 OOP可以提升我数据科学工作的效率。

1.2 什么是OOP?

OOP全称是(Object Oriented Programming),面向对象编程,一种编程思维和方式。
面对需求分析时,OPP会思考怎么做这个需求,而OOP会思考谁来做这个需求,并且进一步思考这个谁需要具备什么特征和行为,即这个谁的属性和方法。通过OOP,可以把这个谁的属性和方法封装在一起,做成一个类。类是一种抽象,类似建房子的图纸;对象是类的具体化或者实例化,类似按着图纸建成一栋栋房子。这个房子有什么特征和能够做什么,就取决于房子的图纸(类)的先前的设计。你会发现,面向对象编程,更接近我们的生活,更能够灵活性地表达我们的生活。

1.3 怎么学习OOP?

通过OOP的概念,我们发现,学习OOP时,我们需要学习这些内容:

  • 1 OOP是一种编程思维和方式。

  • 2 OOP的需求分析是从谁来做开始的,并且要想清楚这个谁要有什么职能。

  • 3 OOP的两个核心概念:类和对象

  • 4 OOP的三个重要特性:封装、继承和多态

  • 5 OOP的属性和方法的类型,例如实例属性和方法、类属性和方法、静态方法。

  • 6 学习和使用OOP来设计和实现负责的项目和系统。

02

类和对象

2.1 概念描述

类和对象是OOP的两个核心概念。

类是抽象,不能直接使用,它是对一群具有相同特征或者行为的事物的一个统称。

  • 1 特征称为属性

  • 2 行为称为方法

对象是具体的,可以直接使用,它是类的具体存在,具有类所设计的属性和方法。

举例说明:
类相当于建房图纸,对象相当于按着建房图纸建造的一栋栋楼房。

在程序开发中,应该先有类,再有对象;应该先设计要使用的类,再设计其它类;设计类的时候遵循奥卡姆剃刀原则,即类设计的时候,不要增加没有的或者不必要的属性和方法

2.2 类设计和生成

使用关键词class来设计类。
简单示例。
需求分析,需求如下
18岁的小明喜欢跑步和读书。
20岁的小红也喜欢跑步和读书。
根据需求,我们创建一个Person类,具有姓名和年龄属性,跑步和读书方法。
参考代码如下:

# 设计Person类
class Person:# 创建实例属性def __init__(self, name, age):self.name = nameself.age = age# 创建实例方法def run(self):print("%d岁的%s喜欢跑步" % (self.age, self.name))def read(self):print("%d岁的%s喜欢跑步" % (self.age, self.name))# 生成小明对象
xiao_ming = Person("小明", 18)
xiao_ming.run()
xiao_ming.read()# 生成小红对象
xiao_hong = Person("小红", 20)
xiao_hong.run()
xiao_hong.read()

结果如下。

03

封装

封装是面向对象编程的一大特性。
OOP的第一步,把属性和方法封装到一个抽象类中。
外界使用类创建对象,然后用对象调用方法。
对象方法的细节被封装在类的内部。
前面的Person类就采用了封装技术。

04

继承

OOP有三大特性,分别是封装、继承和多态。

  • 1 封装,根据这个谁的职能将属性和方法封装到一个抽象的类中

  • 2 继承,实现代码重用,相同的代码不需要重复编写。编写程序时,请遵循不写重复代码块的原则。

  • 3 多态,不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度,让代码可做更丰富的功能。

继承的知识点,罗列如下:

  • 子类继承自父类,可以直接享受父类中已经封装好的方法,不需要再次开发。

  • 子类根据自己职能,封装子类特有的属性和方法。

  • 继承具有传递性。

  • 当父类的方法实现不能满足子类需求时,可以对父类方法进行重写(一种是覆盖父类的方法,另一种是对父类方法功能进行扩展,需要的位置使用super().父类方法

  • 子类对象不能直接访问父类的私有属性和方法(一种隐私保护技术),可以通过父类的公有方法间接访问。

  • 子类可以多个继承类,比方说,孩子类继承父亲和母亲类的特性和方法。多重继承的时候,避免各个类里面具有相同的方法。

  • 如果没有父类,建议统一继承自object

05

多态

多态是指不同的子类对象调用相同的父类方法,会产生不同的执行结果。
多态的知识点:

  • 1 多态的好处,增加代码的灵活度

  • 2 多态的构建,以继承和重写父类方法为前提。

继承和多态的一个简单实例。
需求分析:
HR需要招聘程序员和设计师,基于OOP采用继承和多态编写代码。
参考代码:

class Person(object):def __init__(self, name):self.name = namedef work(self):print("%s喜欢工作" % self.name)class Programmer(Person):def work(self):print("%s编写代码" % self.name)class Designer(Person):def work(self):print("%s设计UI" % self.name)class HumanResources(object):def __init__(self, name):self.name = namedef hr_with_person(self, person):print("%s招聘%s" % (self.name, person.name))# 人才的工作职责person.work()# 创建一个程序员对象
xiao_ming = Programmer("小明")
# 创建一个设计是对象
xiao_hong = Designer("小红")# 创建一个HR对象
xiao_fang = HumanResources("小芳")
# 招聘程序员
xiao_fang.hr_with_person(xiao_ming)
# 招聘设计师
xiao_fang.hr_with_person(xiao_hong)

结果如下:

06

总结

OOP是一种编程方式和思维框架,掌握和熟悉OOP,可以响应更加复杂的需求和开发更加复杂的系统。
OOP的两大核心概念是类和对象,三大特性是封装、集成和多态。

往期精彩回顾适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载中国大学慕课《机器学习》(黄海广主讲)机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑
AI基础下载机器学习交流qq群955171419,加入微信群请扫码:

【Python】Python语言学习:面向对象编程,类和对象,封装、继承和多态相关推荐

  1. python 参数类型的多态_【Python】面向对象:类与对象\封装\继承\多态

    六.Python面向对象--类与对象\封装\继承\多态 1.什么是面向对象编程 1.1 程序设计的范式:程序可控,易于理解 1.2 抽象并建立对象模型 1.3 程序是不同对象相互调用的逻辑.每个对象在 ...

  2. python类与对象 封装继承与多态 0308

    类与对象 初始化方法 init方法 带参实例化类 del方法 str方法 私有 继承 方法的重写 super 父类名称调父类方法 调用父类私有 间接调用 多继承 新式类经曲类 多态 类属性 类方法 静 ...

  3. 面向对象编程——类和对象

    面向对象编程 类和对象 类(Class):用来描述具有相同属性和方法的对象的集合 class Student:name='stu'#属性def say(self):#方法print("hel ...

  4. 面向对象 详解笔记 方法 类 对象 封装 继承 重写 多态 接口

    文章目录 面向过程&面向对象 面向过程 面向对象 什么是面向对象 回顾方法及加深 方法的定义 修饰符 返回类型 break:跳出switch,结束循环和return的区别 方法名:注意规范就o ...

  5. python(11)—— 面向对象编程基础(对象,类,属性,封装,继承,多态)

    把一组数据结构和处理它们的方法组成对象(object),把相同行为的对象归纳为类(class),通过类的封装(encapsulation)隐藏内部细节,通过继承(inheritance)实现类的特化( ...

  6. python多个对象调用类方法、且之间有联系_趣味解读Python面向对象编程 (类和对象)...

    一.面向对象简介 考虑现实生活中,我们的思维方式是放在学生这个个人上,是学生做了自我介绍.而不是像我们刚刚写出的代码,先有了介绍的行为,再去看介绍了谁. 用我们的现实思维方式该怎么用程序表达呢? 面向 ...

  7. python面向对象图片_趣味解读Python面向对象编程 (类和对象)

    一.面向对象简介 考虑现实生活中,我们的思维方式是放在学生这个个人上,是学生做了自我介绍.而不是像我们刚刚写出的代码,先有了介绍的行为,再去看介绍了谁. 用我们的现实思维方式该怎么用程序表达呢?面向过 ...

  8. 【17】有关python面向对象编程的提高【多继承、多态、类属性、动态添加与限制添加属性与方法、@property】...

    一.多继承 案例1:小孩继承自爸爸,妈妈.在程序入口模块再创建实例调用执行 #father模块 class Father(object):def __init__(self,money):self.m ...

  9. JAVA300集——面向对象编程-类和对象-构造方法及其重载-方法调用

    本章概述 "如何开车":(由多个步骤组成),简单问题,可以使用面向过程. "如何造车":(成千上万个零件,细节很多),复杂问题,宏观上用面向对象把握,微观操作用 ...

  10. Day16:面向对象编程——类和对象

    一.面向对象的程序设计 在此之前用到的事面向过程的程序设计,它的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比设计好一条流水线,考虑周全什么时候处理什么东西. 优点:极大的降低 ...

最新文章

  1. B2B行业网站编辑轻松创造内容,提高搜索权重
  2. 准备写java学习笔记
  3. (笔试题)不用除法操作符,实现两个整数的除法
  4. springboot 启动原理
  5. Exercise 42: Is-A, Has-A, Objects, and Classes
  6. 【全军覆没】麻省理工把中国学生拉入黑名单,斯坦福取消中国大陆面试! 这是怎么了?...
  7. mysql 开发复制协议_MySQL组复制MGR(一)– 技术概述
  8. InfluxDB Java入门
  9. 一文带你了解目前的“光伏母亲公路” 能照明充电和融雪
  10. Master公式求递归复杂度
  11. 【bzoj3000】Big Number 【斯特林公式】
  12. eureka默认端口号是多少_微服务技术系列教程 - SpringCloud- 服务治理Eureka(集群搭建)...
  13. plist文件的读写
  14. 百度违规屏蔽词过滤查询工具
  15. 如何设谷歌浏览器黑色浏览背景
  16. sony相机二次开发sdK C语言,sdk与开放API协议支持二次开发的摄像头
  17. 孤单翻译成计算机语言,关于孤独的英文句子_孤单伤感语录带翻译
  18. kernel中的日志打印
  19. 数字逻辑电路——第四章 组合逻辑电路
  20. Linux下配置JSHOP2环境

热门文章

  1. 使用pycharm运行调试scrapy
  2. Python3实现TCP端口扫描器
  3. iOS关于RunLoop和Timer
  4. fiddler抓包 https
  5. itertools mode 之 combinations用法
  6. 如何深拷贝一个对象数组?
  7. Problem E: 零起点学算法25——判断是否直角三角形
  8. gulp+browserSync自动刷新页面
  9. ganglia+nagiosrhel6.5
  10. s3c2410开发环境建立