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

相关推荐
yzcxymz5 分钟前
关于python中的类属性和实例属性
python
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ5 分钟前
MyBatis执行完sql后,返回的数值代表的意思
java·开发语言
小爬虫程序猿20 分钟前
如何利用Python爬虫精准获取苏宁易购商品详情
开发语言·爬虫·python
API快乐传递者20 分钟前
Python爬虫获取1688详情接口详细解析
开发语言·爬虫·python
Fan_55823 分钟前
008 Qt_显示类控件_QLabel
开发语言·qt
No0d1es28 分钟前
GESP CCF C++六级编程等级考试认证真题 2024年12月
开发语言·c++·算法·青少年编程·gesp·ccf·六级
IT199532 分钟前
Qt笔记-Qt Creator开发环境搭建
开发语言·笔记·qt
Json_1817901448034 分钟前
拍立淘按图搜索API接口需要遵循一定的步骤和注意事项
大数据·python·api
CodeClimb37 分钟前
【华为OD-E卷-寻找密码 100分(python、java、c++、js、c)】
java·python·华为od
爱上语文40 分钟前
宠物管理系统:Service层
java·开发语言·宠物