当前位置:首页>WordPress资讯>Python面向对象编程 (OOP) 初学者指南

Python面向对象编程 (OOP) 初学者指南

Python面向对象编程 (OOP) 初学者指南

编程是一门艺术。和艺术一样,选择合适的画笔和颜料对于创作出最好的作品至关重要。 面向对象编程就是这样一种技能。

选择正确的是任何项目的关键部分,它可以导致流畅和愉快的开发或彻底的噩梦。因此,最好为您的用例使用最适合的语言。

这是在Python中学习面向对象编程的主要原因,Python也是最流行的编程语言之一。让我们来学习!

  1. 一个示例Python程序
  2. 学习Python 的要求
  3. 什么是Python中的面向对象编程?
  4. 为什么我们在Python中使用面向对象编程?
  5. Python中的一切都是对象
  6. 你在Python中的第一个对象
  7. Python中OOP的4个支柱
  8. 构建区域形状解析器计算器

一个示例Python程序

在深入探讨这个问题之前,让我们提出一个问题:你有没有写过像下面这样的Python程序?


此代码是一个简单的数字猜测器。尝试将其复制到 Python 文件中并在您的系统中运行它。它完美地实现了它的目的。

但是这里出现了一个大问题:如果我们要求您实现一个新功能怎么办?它可能很简单——例如:

“如果输入是密码的倍数,给用户一个提示。”

随着特征数量的增加以及嵌套条件的总数的增加,程序会迅速变得复杂和繁重。

这正是面向对象编程试图解决的问题。

学习Python OOP的要求

在开始面向对象编程之前,我们强烈建议您牢牢掌握Python基础知识。

对被视为“基本”的主题进行分类可能很困难。因此,我们了一份备忘单,其中包含在Python中学习面向对象编程所需的所有主要概念。

  • 变量:指向特定对象的符号名称(我们将通过文章了解对象的含义)。
  • 算术运算符:加法 (+)、减法 (-)、乘法 (*)、除法 (/)、整数除法 (//)、模 (%)。
  • 内置数据类型:数字(整数、浮点数、复数)、序列(字符串、列表、元组)、布尔值(真、假)、字典和集合。
  • 布尔表达式:结果为假的表达式。
  • 条件:评估布尔表达式并根据结果进行一些处理。由if/else语句处理。
  • 循环:重复执行代码块。它可以是forwhile循环。
  • 功能:有组织和可重用的代码块。您可以使用关键字def创建它们。
  • 参数:传递给函数的对象。例如: sum([1, 2, 4])
  • 运行Python脚本
  • 打开Python脚本:打开终端并键入pythonpython3(取决于您的系统)。

现在您已经清楚地了解了这些概念,您可以继续理解面向对象编程。

什么是Python中的面向对象编程?

面向对象编程 (OOP) 是一种编程范式,我们可以在其中将复杂问题视为对象。

范式是为解决问题提供基础的理论。

因此,当我们谈论OOP时,我们指的是一组用于解决对象问题的概念和模式。

Python中的对象是数据(属性)和行为(方法)的单一集合。您可以将物体视为您周围真实的事物。例如,考虑计算器:

Python面向对象编程 (OOP) 初学者指南

计算器可以是一个对象

您可能会注意到,数据(属性)始终是名词,而行为(方法)始终是动词。

这种划分是面向对象编程的核心概念。您构建存储数据并包含特定类型功能的对象。

为什么我们在Python中使用面向对象编程?

OOP允许您创建安全可靠的软件。许多和库使用这种范式来构建它们的代码库。一些示例是、Kivy、pandas、NumPy和

让我们看看在Python中使用OOP的主要优势。

Python OOP的优点

以下原因将使您选择在Python中使用面向对象编程。

所有现代编程语言都使用OOP

这种范式与语言无关。如果您在Python中学习了OOP,您将能够在以下方面使用它:

所有这些语言要么是本机面向对象的,要么包含面向对象功能的选项。如果你想在Python之后学习它们中的任何一个,它会更容易——你会发现处理对象的语言之间有许多相似之处。

OOP使您可以更快地编码

更快的编码并不意味着编写更少的代码行。这意味着您可以在更短的时间内实现更多功能,而不会影响项目的稳定性。

面向对象编程允许您通过实现抽象来重用代码。这一原则使您的代码更加简洁易读。

您可能知道,程序员花在阅读代码上的时间比编写代码的时间多得多。这就是易读性始终比尽快推出功能更重要的原因。

Python面向对象编程 (OOP) 初学者指南

代码不清晰导致生产力下降

稍后您将看到有关抽象原则的更多信息。

OOP帮助您避免意大利面条式代码

还记得本文开头的猜数程序吗?

如果您继续添加功能,将来您将拥有许多嵌套的if语句。这种无休止的代码行缠结称为意大利面条式代码,您应该尽可能避免使用它。

OOP为我们提供了压缩对象中所有逻辑的可能性,因此避免了嵌套的长段if

OOP改善您对任何情况的分析

一旦您获得了一些OOP的经验,您就能够将问题视为小而具体的对象。

这种理解导致快速的项目初始化。

结构化编程与面向对象编程

结构化编程是初学者最常用的范式,因为它是构建小程序的最简单方法。

它涉及按顺序运行Python程序。这意味着你给计算机一个任务列表,然后从上到下执行它们。

让我们看一个带有咖啡店程序的结构化编程示例。

small = 2
regular = 5
big = 6
 
user_budget = input('What is your budget? ')
 
try:
   user_budget = int(user_budget)
except:
   print('Please enter a number')
   exit()
 
if user_budget > 0:
   if user_budget >= big:
       print('You can afford the big coffee')
       if user_budget == big:
           print('It\'s complete')
       else:
           print('Your change is', user_budget - big)
   elif user_budget == regular:
       print('You can afford the regular coffee')
       print('It\'s complete')
   elif user_budget >= small:
       print('You can buy the small coffee')
       if user_budget == small:
           print('It\'s complete')
       else:
           print('Your change is', user_budget - small)

上面的代码充当咖啡店供应商。它会询问你的预算,然后“卖”给你你能买到的最大的咖啡。

尝试在终端中运行它。它将根据您的输入逐步执行。

这段代码运行良好,但我们有三个问题:

  1. 它有很多重复的逻辑。
  2. 它使用许多嵌套的if条件。
  3. 阅读和修改会很困难。

OOP的发明是为了解决所有这些问题。

让我们看看上面用OOP实现的程序。如果您还不明白,请不要担心。它仅用于比较结构化编程和面向对象编程。


注意:本文将更深入地解释以下所有概念。

上面的代码代表一个名为“Coffee”的。它有两个属性——“name”和“price”——它们都在方法中使用。主要方法是“销售”,它处理完成销售过程所需的所有逻辑。

如果您尝试运行该类,您将不会得到任何输出。这主要是因为我们只是为咖啡声明了“模板”,而不是咖啡本身。

让我们使用以下代码实现该类:

small = Coffee('Small', 2)
regular = Coffee('Regular', 5)
big = Coffee('Big', 6)
 
try:
   user_budget = float(input('What is your budget? '))
except ValueError:
   exit('Please enter a number')
  
for coffee in [big, regular, small]:
   coffee.sell(user_budget)

在这里,我们正在制作“Coffee”类的实例或咖啡对象,然后调用每种咖啡的“sell”方法,直到用户负担得起任何选项。

我们将使用两种方法获得相同的输出,但我们可以使用OOP更好地扩展程序功能。

下表比较了面向对象编程和结构化编程:

面向对象编程 结构化编程
更易于维护 难以维护
不要重复自己 (DRY) 方法 多处重复代码
多处复用的小段代码 几个地方的大量代码
对象方法 块码方法
更容易调试 更难调试
大学习曲线 更简单的学习曲线
用于大型项目 优化为简单程序

原文地址:https://www.wbolt.com/python-object-oriented-programming.html

WordPress资讯

对比Django和WordPress – 哪个更合适建站?

2024-1-22 1:00:31

WordPress资讯

使用Remove Unused Media插件整理媒体库

2024-1-22 1:00:33

个人中心
今日签到
有新私信 私信列表
搜索