Python 面向对象编程(一)

news/2025/1/12 0:56:25/
  • 【无限嚣张(菜菜)】:hello您好,我是菜菜,很高兴您能来访我的博客,我是一名爱好编程学习研究的菜菜,每天分享自己的学习,想法,博客来源与自己的学习项目以及编程中遇到问题的总结。
  • 座右铭:尽人事,听天命
  • 个人主页:无限嚣张(菜菜)

目录

前言

一、面向对象和面向过程的区别

  1. 面向过程(Procedure Oriented)思维
  2. 面向对象思维(Object Oriented)思维
  3. 面向对象和面向过程的总结

二、对象的进化

前言

        面向对象(Object orject Programming, OOG)编程主要针对大型软件设计而来,面向对象编程使程序的扩展性更强,可读性更好,使得编程像搭积木一样简单化。面向对象编程将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式更接近人的思维,从而大大提高编程的效率。Python完全采用了面向对象的思想,是真正面向对象的编程语言,完全支持面向对象的基本功能,例如:继承、多态、封装。Python支持面向过程、面向对象、函数式编程等多种编程范式。

面向对象和面向过程的区别

面向过程(Procedure Oriented)思维

        通俗讲,就是通过过程来组织我们的程序,面向过程更加关注的是“程序的逻辑流程”,是一种执行者思维,适合编写小规模的程序。面向过程思想思考问题时,我们首先思考的是怎么按照步骤实现?并将步骤对应成方法,一步一步,最终实现。这个适合简单的任务,不需要过多协作情况下,比如如何开车?我们很容易就会想到如下四个步骤:1.发动车 2.挂挡 3.踩油门 4.走你。面向过程适合简单、不需要协作的事务。但是,当我们思考比较复杂的事务,面向过程就不能实现了,需要很多协作才能完成。此时面向对象的思想也就产生了。

面向对象思维(Object Oriented)思维

        面向对象更加关注的是“软件对象之间的关系”,是一种设计者思维,适合编写大规模的程序。面向对象(Object)思想更契合人的思维模式,我们首先思考的是:怎么设计这个事物?比如思考造车,我们就会先思考:车是怎么设计呢?而不是造车的步骤。这就是思维方式的改变。面向对象方式思考造车,发现车由如下对象组成:(1)轮胎 (2)发动机 (3)车壳 (4)座椅 (5)挡风玻璃,为了方便协作,我们找轮胎厂家完成制造轮胎的步骤,发动机厂家完成制造发动机的步骤,这样,发现大家可以同时进行车的制造,最终进行组装,大大提高了效率。但是,具体轮胎厂的一个流水线操作,仍然是有步骤的,还是离不开面向过程思想!因此,面向对象可以帮助我们从宏观上把握,从整体上分析整个系统。但是,具体到实现部分的微观操作(就是一个个方法),仍然需要面向过程的思路去处理。我们千万不要把面向过程和面向对象对立起来,他们是相辅相成的,面向对象离不开面向过程。

面向对象的思考方式:遇到复杂问题,先从问题中找名词(面向过程更多的是找动词),然后确立这些名词哪些可以作为类,再根据问题需求确定的类的属性和方法,确定类之间的关系。

面向对象和面向过程的总结

        (1)都是解决问题的思维方式,都是代码组织的方式。

        (2)解决简单问题可以使用面向过程。

        (3)解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程。

对象的进化

        随着编程面临的问题越来越复杂,编程语言本身也在进化,从主要处理简单数据开始,随着数据变多进化“数组”;数据类型变复杂,进化出“结构体”;处理数据的方式和逻辑变复杂,进化出了对象。

1.简单数据

        像20,40,50等这些数字,可以看做是简单数据。最初的计算机编程,都是这样的数字。

2.数组

        将同类型的数据放到一起。比如:整数组[20,30,40],浮点数数组[10.2,11/3,44.4],字符串组["aa","bb",cc].

3.结构体

        将不同类型的数据放到一起,是C语言中的数据结构,比如:

        struct resume{

                int age;

                char name [10];

                double salary;

                };

4.对象

        将不同类型的数据、函数(即函数)放到一起,就是对象。比如:

class Student

        company = "SXT"  # 类属性

        count = 0 # 类属性

        def__int__(self,name,score):

                self.name = name

                self.score = score

                Student.count = Student.count + 1

        def say_score(self): 

                print("我的公司是:",Student.company)

                print(self.name,‘的分数是:’,self.score)


http://www.ppmy.cn/news/6905.html

相关文章

TfS-CI(携手实现可持续发展)审核知多少?

【TfS-CI(携手实现可持续发展)审核知多少?】 EcoVadis可持续性评分平台相信不少人有听说过,那么和它一样致力于可持续发展的TfS-CI审核不知道大家又了解多少? 谈到TfS-CI审核,不得不先说“携手实现可持续发…

浅析几种常见的诊断数据库——ARXML

分别回忆了常见诊断数据库CDD、ODX文件格式,今天主要介绍另外一种常用的数据库文件格式——ARXML(主要应用于AUTOSAR流程数据交互) AUTOSAR诊断提取模板——ARXML AUTOSAR是汽车开放系统架构,该架构有利于车辆电子系统软件的交互与更新,并为高效管理复杂的车辆电子和软件…

带你走进Java字符串的小世界

目录 一. String 1. 什么是String 2. String常用构造器 3. 字符串的判断 4. 字符串的获取 5. 字符串的转换 6. 字符串比较和替换 7. 字符串的切割 二. StringBuffer与StringBuilder 2.1 关于StringBuffer 2.1.1 定义 2.1.2 构造方法 2.2 关于StringBuffer 三. StringJoiner的使…

【Java 数据结构】优先级队列

篮球哥温馨提示:编程的同时不要忘记锻炼哦!谁是你的优先级呢? 目录 1、优先级队列 1.1 优先级队列概念 1.2 堆的概念 1.3 堆的存储结构 2、模拟实现优先级队列 2.1 成员变量的设定 2.2 根据数组构造出一个堆 2.3 向下调整 2.4 creat…

【Linux】Linux项目自动化构建工具——make/Makefile

我举报,有人不学习!!! 文章目录一、makefile原理二、初步理解makefile的语法1.gcc如何得知,源文件不需要再编译了呢?2.为什么执行的指令是make和make clean呢?三、makefile的推导规则四、Linux…

Zabbix技术分享——snmp异常排查指南

大家好,我是乐乐。在IT运维中,难免会碰上设备snmp不通的情况,那么,当问题出现的时候,运维工程师该如何快速找到问题所在呢?下面让我们一起来看看吧! 1.IP配置检查 首先检查zabbix监…

2022年虚拟电厂行业研究报

第一章 行业概况 虚拟电厂(VPP, Virtual Power Plant)本质上是将分布式电源(发电)、可控负荷(用电)、储能等利用计算机通信网络技术将其聚合成一个虚拟的集中式电厂,来为电网提供需求侧响应的“…

代码随想录拓展day4 143.重排链表;141. 环形链表;面试题 02.07. 链表相交

代码随想录拓展day4 143.重排链表;141. 环形链表;面试题 02.07. 链表相交 关于链表的一些应用,基本都用到了快慢指针的思路。对于单链表来说,确定边界,也就是遍历时的终止条件非常重要。 143.重排链表 143. 重排链表…