前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面向对象编程

面向对象编程

原创
作者头像
Heaven645
修改2024-08-03 21:17:14
1301
修改2024-08-03 21:17:14
举报
文章被收录于专栏:Python学习

前言

面向对象编程(OOP)是Python编程中的一个核心概念,它能帮助程序员更好地组织和管理代码。本篇文章详细讲解了面向对象编程的基本原理和应用。


本篇文章参考:黑马程序员

一、初识对象

【情景引入——生活中数据的组织】

学校开学要求学生填写自己的基础信息,老师给每位同学发了一张白纸,让学生自行填写。不同的学生自行填写的内容可能不尽相同,如下图所示:

显而易见,同学们填写的内容混乱。但是如果我们将白纸改为改为登记表,并打印出来让学生自行填写,他们就会按照我们设计的表格规范地填写内容,这样大家所填的信息就会整洁明了。

那程序又是如何组织数据的呢?

程序中有多种数据类型,可以采用不同的方式来组织数据,比如使用字典、字符串或列表来维护学生的信息。

然而,使用变量来记录学生信息可能会导致数据组织混乱和不统一。如果程序能够像生活中一样设计表格并打印出来供人填写,那么数据的组织将变得更加方便和清晰。面向对象的设计允许我们通过类和对象的方式来组织和管理数据,使得我们的程序结构更加清晰、易于理解和维护。

使用对象组织程序:

①在程序中设计表格,我们称之为设计类(class)。

类是对现实世界中某种事物的抽象,它定义了事物的属性(数据)和行为(方法)。设计的登记表可以视为一个类,它定义了学生信息应包含的字段,如姓名、年龄、学号等。

②在程序中打印表格,我们称之为创建对象。

打印一张表格类比于一个类的实例化,即创建一个对象。

③在程序中填写表格,我们称之为对象属性赋值。

通过表格对象,学生可以填写自己的信息,每个学生填写的信息就是对该对象的特定实例。

所以在生活和程序中,我们可以通过设计、打印和填写表格的形式来组织数据。这一过程相当于使用类来封装属性,并基于类创建一个个对象来使用。

类的使用语法: class 类名称 :   类的属性   类的行为

  • class关键字:表示定义一个类
  • 类的属性:定义在类中的变量(成员变量)
  • 类的行为:定义在类中的函数(成员方法)

注意:函数是写在类外的,定义在类内部的函数都称之为方法

创建类对象的语法: 对象 = 类名称()

代码语言:python
代码运行次数:0
复制
# 1.设计一个类(类比生活中设计一张登记表)
class Student:
    name=None          # 记录学生姓名
    gender=None        # 记录学生性别
    nationality=None   # 记录学生国籍
    native_place=None  # 记录学生籍贯
    age=None           # 记录学生年龄

# 2.创建一个对象类比生活中打印一张登记表)
stu_1=Student()
# 3.对象属性进行赋值(类比生活中填写登记表)
stu_1.name="小明"
stu_1.gender="男"
stu_1.nationality="中国"
stu_1.native_place="广东省"
stu_1.age="15"
# 4.获取对象中记录的信息
print(stu_1.name)
print(stu_1.gender)
print(stu_1.nationality)
print(stu_1.native_place)
print(stu_1.age)

输出结果: 小明

中国

广东省

15

二、成员方法

类中不仅可以定义属性用来记录数据,也可以定义函数用来记录行为。

定义语法: def 方法名(self,形参1,……,形参N):   方法体

在类中定义成员方法和定义函数基本一致,但仍有细微区别,区别在于方法定义的参数列表中有一个self关键字。

  • 它用于表示类对象本身
  • 定义成员方法必须填写self关键字
  • 只有通过self,成员方法才能访问类的成员变量
  • 当我们使用类对象调用方法时self会自动被python传入
  • self出现在形参列表中,但是不占用参数位置,无需理会
代码语言:python
代码运行次数:0
复制
# 定义一个带有成员方法的类
class Student:
    # 成员变量
    name=None  # 学生的姓名
    # self必须出现在传参列表中,但当我们调用的时候可以当它不存在
    # 成员方法
    def say_hi(self):
        print(f"大家好,我是{self.name},以后请多关照!")
    
     def say_hi2(self,msg):
        print(f"大家好,我是{self.name},{msg}")
        
# 创建类对象
stu1=Student()
stu1.name="小明"
stu1.say_hi()

stu2=Student()
stu2.name="小红"
stu2.say_hi2("很高兴认识大家!")

输出结果: 大家好,我是小明,以后请多关照! 大家好,我是小红,很高兴认识大家!

三、类和对象

现实世界的事物由属性和行为组成。

现实世界的事物有属性和行为,类也有属性和行为。使用程序中的类,可以完美的描述现实世界的事物。

基于类创建对象的语法: 对象 = 类名称()

面向对象编程的核心理念是使用对象进行编程。我们首先设计类,然后基于这些类创建对象,并利用这些对象来完成具体的任务。

思考:为什么必须创建对象才能使用类呢?

答:类可以看作是一种程序内部的“设计图纸”,只有基于这张图纸生成实际的实体(对象),才能使其正常工作。

在现实中生产事物:

在现实中生产一个闹钟需要我们先设计一张图纸,图纸中规划了闹钟的属性(比如厚度、尺寸、材质)以及行为(比如响铃),有了设计图纸后才会在生产线中生产出一个个实体。

在程序中通过类来描述:

基于类创建对象:

代码语言:python
代码运行次数:0
复制
# 设计一个闹钟类
class Clock:
    id = None       # 闹钟编号
    price = None    # 价格


    def ring(self):
        # 导入 winsound 模块,实现音频的输出
        import winsound
        # 参数一frequency:音频频率 (单位Hz)
        # 参数二duration:音频持续时间 (单位毫秒)
        winsound.Beep(2000, 3000)

# 构建2个闹钟对象并让其工作
clock1 = Clock()
clock1.id = "003032"
clock1.price = 19.99
print(f"闹钟ID:{clock1.id},价格:{clock1.price}")
clock1.ring()

clock2 = Clock()
clock2.id = "003033"
clock2.price = 21.99
print(f"闹钟ID:{clock2.id},价格:{clock2.price}")
clock2.ring()

闹钟响铃并输出: 闹钟ID:003032,价格:19.99

闹钟ID:003033,价格:21.99

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、初识对象
  • 二、成员方法
  • 三、类和对象
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档