首页 > 编程语言 >【python学习】面向对象编程以及面向对象编程的核心概念和使用方法

【python学习】面向对象编程以及面向对象编程的核心概念和使用方法

时间:2024-07-12 22:58:14浏览次数:15  
标签:python 核心 calculator 编程 对象 面向对象编程 2.3 代码

引言

Python语言设计之初,就是为了面向对象,所以Python的面向对象更加易于理解。
面向对象编程中,我们将现实世界的实体视为对象,每个对象都有属性(数据)和行为(方法)

文章目录

一、面向对象编程是什么

面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将数据和与数据相关的操作封装在一起,形成一个独立的实体,这个实体称为对象。
OOP的核心概念包括类(Class)、对象(Object)、封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)

二、面向过程编程和面向对象编程的区别

2.1 面对过程编程

面向过程编程是一种以过程为中心的编程范式
在这种范式中,程序被分解成一系列步骤或过程,这些步骤或过程按顺序执行,以完成特定的任务
面向过程编程通常使用函数和结构来组织代码,它强调的是解决问题的步骤和顺序

2.2 面向对象编程

面向对象编程是一种以对象为中心的编程范式
在这种范式中,程序被分解成一系列相互交互的对象,每个对象都有自己的数据(属性)和行为(方法)
面向对象编程强调的是将数据和操作数据的方法封装在一起,形成独立的实体,这些实体可以相互通信和协作

2.3 区别

2.3.1 设计思路:

面向过程编程:从步骤或过程出发,将问题分解为一系列的函数调用。
面向对象编程:从对象和类出发,将问题分解为一系列相互交互的对象和类。

2.3.2 数据与操作:

面向过程编程:数据和操作通常是分离的,操作(函数)作用于数据。
面向对象编程:数据(属性)和操作(方法)被封装在一起,形成独立的对象。

2.3.3 代码结构:

面向过程编程:代码结构通常是线性或树状的,函数调用和流程控制是主要手段。
面向对象编程:代码结构通常是网状的,对象之间的通信和协作是主要手段。

2.3.4 代码复用:

面向过程编程:代码复用主要通过函数的参数传递和返回值来实现。
面向对象编程:代码复用主要通过继承和多态来实现,对象可以继承其他对象的属性和方法,并且可以重写或扩展这些属性和方法。

2.3.5 灵活性和扩展性:

面向过程编程:当需求变化时,可能需要修改和重写大量的函数代码。
面向对象编程:通过增加新的类和对象,可以更容易地扩展和修改程序,实现代码的灵活性和可维护性。

总而言之,面向对象编程通常比面向过程编程更适用于复杂和大型项目,因为它提供了更好的代码组织、复用和维护能力

三、面向对象编程的核心概念

3.1 类(Class)

类是创建对象的蓝图,它定义了一组属性和一组方法。属性是对象的静态特征,而方法是对象可以执行的操作

3.2 对象(Object)

对象是类的实例,它具有类的属性和方法。每个对象都有自己独立的属性和状态

3.3 封装(Encapsulation)

封装是指将对象的实现细节隐藏起来,只暴露出公共接口。这样可以提高代码的安全性和可维护性

3.4 继承(Inheritance)

继承允许我们创建一个新的类(子类),这个类可以继承另一个类(父类)的属性和方法。子类可以扩展或修改父类的行为

3.5 多态(Polymorphism)

多态允许我们使用一个接口来表示不同的数据类型。这意味着不同的类可以有相同的方法名,但实现方式不同

3.6 类和对象的关系逻辑图

在这里插入图片描述

3.7 继承的逻辑图

在这里插入图片描述

四、面向对象编程的示例

使用Python来创建一个简单的计算器类,并创建一个子类来扩展计算器的功能

# 定义一个父类
class Calculator:
    def add(self, a, b):
        return a + b
    def subtract(self, a, b):
        return a - b
    def multiply(self, a, b):
        return a * b
    def divide(self, a, b):
        if b == 0:
            raise ValueError("Division by zero is not allowed.")
        return a / b
# 定义一个子类,继承自 Calculator 类
class ScientificCalculator(Calculator):
    def square(self, a):
        return a ** 2
    def cube(self, a):
        return a ** 3
    def factorial(self, n):
        if n == 0:
            return 1
        return n * self.factorial(n - 1)
# 创建 Calculator 类的实例
calculator = Calculator()
# 创建 ScientificCalculator 类的实例
scientific_calculator = ScientificCalculator()
# 使用父类和子类的方法进行计算
print(calculator.add(5, 3))  # 输出: 8
print(calculator.subtract(5, 3))  # 输出: 2
print(calculator.multiply(5, 3))  # 输出: 15
print(calculator.divide(5, 3))  # 输出: 1.6666666666666667
print(scientific_calculator.square(5))  # 输出: 25
print(scientific_calculator.cube(5))  # 输出: 125
print(scientific_calculator.factorial(5))  # 输出: 120

解释一下代码:

  • Calculator 是一个父类,它定义了四个基本算术运算的方法
  • ScientificCalculator 是从 Calculator 继承的子类,它添加了三个科学计算的方法:squarecubefactorial
  • 我们创建了 Calculator 类的实例,并创建了 ScientificCalculator 类的实例
  • 我们通过 calculator 对象调用了它的方法来执行基本算术运算,通过 scientific_calculator 对象调用了它的方法来执行科学计算

五、总结(思维导图)

在这里插入图片描述

标签:python,核心,calculator,编程,对象,面向对象编程,2.3,代码
From: https://blog.csdn.net/m0_49243785/article/details/140389467

相关文章

  • 【Python123题库】#查询省会 #字典的属性、方法与应用
    禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/140081665参考教程:B站视频讲解——https://space.bilibili.com/3546616042621301有帮助麻烦点个赞~~Python123题库查询省会字典的属性、方法与应用查询省会类型:字典‪‬‪‬‪‬‪‬‪‬‮‬‪‬......
  • 超详细Python教程——迭代器和生成器
    迭代器和生成器迭代器是实现了迭代器协议的对象。Python中没有像protocol或interface这样的定义协议的关键字。Python中用魔术方法表示协议。__iter__和__next__魔术方法就是迭代器协议。classFib(object):"""迭代器"""def__init__(self,num):......
  • [SUCTF 2019]Pythonginx 1
    目录题目代码分析urlsplit()nginx文件位置解题题目代码分析fromflaskimportFlask,Blueprint,request,Response,escape,render_templatefromurllib.parseimporturlsplit,urlunsplit,unquotefromurllibimportparseimporturllib.requestapp=......
  • python————集合干货
    1.集合的定义python中的集合是一种无序的,元素不重复的数据结构。定义集合的方式:方式一:        #方式一不可以定义空集合s0={1,2,3,4}print(s0,type(s0))方式二:#方式二s1=set()print(s1,type(s1))s2=set(range(10))print(s0,type(s0))2.集合的......
  • python的视频处理实操宝典
    前言Python视频去抖动是指利用Python编程语言和相关的图像处理库,对视频中由于相机震动或手持拍摄等原因而导致的画面抖动进行处理的技术。视频去抖动的目的是使得视频画面更加稳定,减少抖动,提高观看体验。通常,视频去抖动的实现可以采用多种方法,包括基于帧差的方法、运动估......
  • python:使用matplotlib库绘制图像(四)
    作者是跟着http://t.csdnimg.cn/4fVW0学习的,matplotlib系列文章是http://t.csdnimg.cn/4fVW0的自己学习过程中整理的详细说明版本,对小白更友好哦!四、条形图1.一个数据样本的条形图条形图:常用于比较不同类别的数量或值,以及进行简单的数据分析。直方图:常用于分析数据的集中趋......
  • 基于python+爬虫实现招聘职位数据分析[源码+LW+部署讲解视频]
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业......
  • BS-Python-061 基于Python+Django实现在线考试系统
    作者主页:编程千纸鹤作者简介:Java、前端、Python开发多年,做过高程,项目经理,架构师主要内容:Java项目开发、Python项目开发、大学数据和AI项目开发、单片机项目设计、面试技术整理、最新技术分享收藏点赞不迷路 关注作者有好处文末获得源码 项目编号:BS-Python-061一,环境......
  • 10个Python函数参数进阶用法及代码优化
    目录1.默认参数值:让函数更加灵活2.关键字参数:清晰的调用方式3.*args:拥抱不确定数量的位置参数4.**kwargs:处理不确定数量的关键字参数5.参数解包:简化多参数的传递6.命名关键字参数:限制关键字参数7.局部变量与全局变量:理解作用域8.高级:装饰器(@decorator)9.Lambd......
  • python每日学习4:函数的定义和各类参数定义与用法
    目录目录一、函数的定义二、参数的定义和用法1、必选参数2、默认参数3、可变参数4、关键字参数5、命名关键字参数三、参数在实际操作中的要求一、函数的定义1、函数代码块以def关键词开头,后接函数名称和圆括号()2、在圆括号内定义传入参数3、函数的第一行语句可以......