Python--面向对象

面向对象⭐⭐

1. 面向对象和面向过程思想

面向对象面向过程都是一种编程思想,就是解决问题的思路

  • 面向过程:POP(Procedure Oriented Programming)面向过程语言代表是c语言
  • 面向对象:OOP(Object Oriented Programming)常见的面向对象语言包括:java c++ go python koltin

通过面向对象的方式,我们不再关注具体的步骤,而是将问题抽象为对象和它们之间的交互。我们可以直接调用对象的方法来实现功能,而无需显式指定每个步骤。

面向过程强调按照步骤 执行操作,而面向对象强调通过定义和操作对象来解决问题。

在面向对象的编程中,我们将问题抽象为对象的集合,这些对象具有属性和行为,并通过对象之间的交互来实现功能。这种抽象和交互的方式使得面向对象编程更加灵活、可维护和可扩展。

接下来我们看同一个问题,面向过程和面向对象是怎么解决的?

1.1. 面向过程编程的贪吃蛇游戏

在面向过程编程中,贪吃蛇游戏可能会以以下方式实现:

  1. 定义蛇的初始位置、长度、方向等变量。
  2. 创建一个表示游戏区域的二维数组。
  3. 在游戏循环中,根据用户输入改变蛇的方向。
  4. 更新蛇的位置,根据当前方向向前移动一格。
  5. 检查蛇是否吃到食物,如果是,则增加蛇的长度。
  6. 检查蛇是否撞到边界或自己的身体,如果是,则游戏结束。
  7. 在游戏区域中绘制蛇和食物。
  8. 循环回到第3步,直到游戏结束。

在面向过程的编程中,游戏的各个方面被划分为一系列的步骤和变量,通过按照特定顺序执行这些步骤来控制游戏的逻辑和状态。

1.2. 面向对象编程的贪吃蛇游戏

现在,让我们看看如何使用面向对象编程来实现贪吃蛇游戏。

  1. 创建一个Snake类,具有属性(例如位置、颜色、长度、方向)和方法(例如移动、吃食物)。
  2. 创建一个Food类,具有属性(例如位置、颜色)。
  3. 创建一个Game类,它包含一个或多个蛇对象和一个或多个食物对象,以及游戏区域等属性。Game类还具有控制游戏逻辑的方法,例如更新游戏状态和绘制游戏界面。
  4. 在游戏循环中,通过调用Game类的方法来控制游戏的进行,例如根据用户输入改变蛇的方向,更新蛇的位置,检查碰撞等。
  5. 在游戏界面中,通过调用绘图方法来绘制蛇和食物。

在面向对象编程中,贪吃蛇游戏被视为一组对象的交互。各个对象封装了游戏的状态和行为,并通过对象之间的消息传递来实现功能。这种对【对象Object】的抽象和交互使得游戏逻辑更清晰、可维护性更高,并且可以轻松地扩展和修改游戏的功能。

一切皆对象!

1.3. 面向对象的总结

  • 面向对象,强调的是对象(实体)
  • 面向对象是一种思想,更加符合人的思维习惯
  • 面向对象使复杂的问题简单化了
  • 面向对象的出现,让曾经在过程的执行者 ,变成了对象的指挥者

2. 类和对象

类和对象是面向对象非常重要的概念

  • 类是描述了一种类型(相当于图纸)
  • 对象是这个类型的具体实现(相当于图纸具体实现)

思考:

旺财和狗,哪个是类,哪个是对象?

答案:

狗是一个类型,属于类

旺财是狗的实现,属于对象

类和对象的关系

类就是制造图纸,只有一个。对象是类的实体,会产生多个

定义类和创建对象

类的定义格式:

class 类名:
    pass

创建对象

对象名 = 类名()

代码演示:

# 定义类
class Person:
    pass
# 创建对象
p1 = Person()

3. 类的组成

类可以描述世间万物,类都需要有类名,也应该具备一些属性行为

  • 类的关键字:class
  • 类的名称:类名
  • 类的属性:一组数据
  • 类的方法:允许进行操作的方法(行为)

人(Person)类应该具备什么属性和行为呢?

  • 属性:姓名(name) 、年纪(age)
  • 方法:吃(eat)、跑(run)、说话(say)

3.1. 成员属性

成员属性的定义需要在初始化方法__init__方法下定义

格式:

def __init__(self):
	self.属性 = 属性值

举例:

class Person:
    def __init__(self, name, age):
        # 成员属性
        self.name = name
        self.age = age
        
# 创建对象
p = Person('张三', 30)
# 访问成员属性
print(p.name)
print(p.age)

在创建对象时,属性值可以由外部传进来,也可以在初始化方法里设置为任意值

3.2. 成员方法

成员方法的定义格式为 def 函数名(self):

class Person:
    
    # 定义成员方法 say_hello
    def say_hello(self):
        print('hello')
        
	# 定义成员方法run
    def run(self):
        print('跑')

# 创建对象
p = Person()
# 调用成员方法
p.say_hello()

注意:

成员方法都会默认有参数self,调用的时候不需要传递self

相关推荐
奔跑吧邓邓子1 分钟前
【Python爬虫(36)】深挖多进程爬虫性能优化:从通信到负载均衡
开发语言·爬虫·python·性能优化·负载均衡·多进程
不会Hello World的小苗5 分钟前
Java——链表(LinkedList)
java·开发语言·链表
lsx20240617 分钟前
Perl 面向对象编程指南
开发语言
学长学姐我该怎么办26 分钟前
年前集训总结python
python
量化投资技术33 分钟前
【量化科普】Sharpe Ratio,夏普比率
python·量化交易·量化·量化投资·qmt·miniqmt
yanglamei196235 分钟前
基于Python+Django+Vue的旅游景区推荐系统系统设计与实现源代码+数据库+使用说明
vue.js·python·django
虚假程序设计38 分钟前
python用 PythonNet 从 Python 调用 WPF 类库 UI 用XAML
python·ui·wpf
Allen Bright38 分钟前
【Java基础-46.3】Java泛型通配符详解:解锁类型安全的灵活编程
java·开发语言
画个逗号给明天"1 小时前
C++STL容器之list
开发语言·c++
胡桃不是夹子1 小时前
CPU安装pytorch(别点进来)
人工智能·pytorch·python