Python教程(20)——python面向对象编程基本概念

news2024/9/28 17:27:38

面向对象

      • 类和对象
      • 初始化方法
      • 属性和方法
      • self关键字
      • 继承
      • 多态

面向对象(Object-oriented)是一种常用的程序设计思想,它以对象作为程序的基本单元,将数据和操作封装在一起,通过对象之间的交互来实现程序的功能。

在面向对象编程中,将问题抽象成对象,而对象可以拥有属性(数据)和方法(操作)。对象可以被看作是现实世界中的实体或概念,具有某种特定的状态和行为。通过封装、继承和多态等机制,可以实现代码的模块化、复用和灵活性。

上面的解释是非常的抽象,可能对于很多初学者来说,不是很好理解,但是没关系,后面学习过这章节之后,你就大概能理解了。,我们先来了解Python面向对象的一些基本概念,以便可以很好的掌握面向对象编程。

给出一段小代码,然后逐个来分析Python面向对象编程中的一些的基本概念。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def say_hello(self):
        print(f"你好,我是{self.name},今年{self.age}岁。")

person1 = Person("一点", 30)
person1.say_hello()  # 输出:你好,我是一点,今年30岁。
person2 = Person("Alittle", 40)
person2.say_hello()  # 输出:你好,我是Alittle,今年40岁。

在这里插入图片描述

类和对象

类(Class)是一种抽象的概念,用于定义具有相同属性和方法的对象的集合。对象(Object)是类的一个具体实例,通过类可以创建多个对象。
上面的例子我们创建一个Person类,然后person1是创建的具体的实例对象,可以创建多个,person1person2都是创建的对象。

初始化方法

初始化方法(Constructor)是类中一个特殊的方法,它在创建对象时自动调用。在初始化方法中,可以对对象的属性进行初始化。在Python中,初始化方法的名称为__init__
上面的__init__(self, name, age)也就是初始化方法,也可以称为构造函数,其中参数self不可省略。

属性和方法

属性(Attribute)是对象的特征或数据,方法(Method)是对象的行为或操作。对象的属性保存对象的状态,而方法定义了对象的行为。
上面例子的nameage就是定义的属性,say_hello就是定义的方法。更加具体的相关介绍后面会写。

self关键字

在类中定义方法时,方法的第一个参数必须是selfself表示对象本身,在方法内可以通过self访问对象的属性和方法。

继承

继承(Inheritance)是面向对象编程中的一个重要概念,它允许一个类从另一个类继承属性和方法。通过继承,子类可以重用父类的代码,并可以在子类中添加新的属性和方法。在Python中通过在类定的时候加括号的方式来实现继承class Student(Person)

class Student(Person):
    def __init__(self, name, age, school):
        super().__init__(name, age)  # 调用父类的初始化方法
        self.school = school
    
    def say_hello(self):
        super().say_hello()  # 调用父类的方法
        print(f"我在{self.school}上学。")

student1 = Student("一点的女儿", 5, "幼儿园")
student1.say_hello()

这个例子输出:

你好,我是一点的女儿,今年5岁。
我在幼儿园上学。

多态

多态(Polymorphism)是指一个对象可以引用不同类的实例,从而实现不同类的方法可以具有相同的行为。这可以通过继承和方法重写来实现。

class Animal:
    def make_sound(self):
        pass

class Dog(Animal):
    def make_sound(self):
        print("汪汪汪!")

class Cat(Animal):
    def make_sound(self):
        print("喵喵喵!")

def make_animal_sound(animal):
    animal.make_sound()

dog = Dog()
cat = Cat()
make_animal_sound(dog)  # 输出:汪汪汪!
make_animal_sound(cat)  # 输出:喵喵喵!

我们可以传入不同的对象(DogCat),但是函数 make_animal_sound 的调用方式却是一样的。
这种多态性使得我们可以编写更加灵活和可扩展的代码。当我们拓展程序中的新功能时,只需要创建新的派生类并重写相应的方法即可,而不用修改已有的代码。这大大降低了代码的耦合性,提高了代码的可维护性和可扩展性。

需要注意的是,面向对象编程不仅仅是这些基本概念的运用,还包括一些设计原则和模式等,用于指导和优化面向对象的软件开发。这些概念和原则一起构成了面向对象编程的完整体系。

**更多精彩内容,请关注同名公众:一点sir(alittle-sir)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1363725.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Wpf 使用 Prism 实战开发Day09

设置模块设计 1.效果图 一.系统设置模块,主要有个性化(用于更改主题颜色),系统设置,关于更多,3个功能点。 个性化的颜色内容样式,主要是从 Material Design Themes UI简称md、提供的demo里复制代码过来使用的。 1.设置…

CHS_02.1.1.2+操作系统的特征

CHS_02.1.1.2操作系统的特征 操作系统的四个特征并发这个特征为什么并发性对于操作系统来说是一个很重要的基本特性资源共享虚拟异步性 各位同学 大家好 在这个小节当中 我们会学习 操作系统的四个特征 操作系统有并发 共享 虚拟和异部这四个基本的特征 其中 并发和共享是两个…

1871_什么是PCB

Grey 全部学习内容汇总: https://github.com/GreyZhang/g_hardware_basic 1871_什么是PCB 简单的PCB的缩写自然很容易理解,不过PCB涉及到的一些概念性的知识会比一个简单的缩写多得多。这里根据AD官方上的一个页面来整理一下这方面的基础知识点。 主…

【⭐AI工具⭐】AI工具导航推荐

目录 零 工具导航👉【[AI工具集导航](https://ai-bot.cn/)】👈👉【[iForAI](https://iforai.com/)】👈👉【[AInav](https://www.ainav.cn/)】👈👉【[Navi AI 导航](https://www.naviai.cn/)】&a…

YTM32的低功耗PowerDown模式及唤醒管理器WKU模块

文章目录 Introduction专门的唤醒源管理器WKU外部的唤醒引脚内部的触发信号 进入PowerDown模式的操作流进入低功耗模式配合使用的其他模块 性能指标低功耗电流唤醒时间 Conclusion Introduction YTM32的低功耗系统中有设计了多种工作模式,功耗从高到低,…

大数据时代必备技能!Shell脚本学习网站助你一臂之力!

介绍:Shell脚本是一种用于自动化任务的脚本语言,它使用Shell命令来执行一系列操作。Shell脚本通常以.sh为扩展名,并使用#!/bin/bash作为第一行来指定使用的Shell解释器。 在Shell脚本中,我们可以使用各种命令和控制结构来实现自动…

【大数据】Flink CDC 的概览和使用

Flink CDC 的概览和使用 1.什么是 CDC2.什么是 Flink CDC3.Flink CDC 前生今世3.1 Flink CDC 1.x3.2 Flink CDC 2.x3.3 Flink CDC 3.x 4.Flink CDC 使用5.Debezium 标准 CDC Event 格式详解 1.什么是 CDC CDC(Change Data Capture,数据变更抓取&#xf…

汽车电子行业的 C 语言编程标准

前言 之前分享了一些编程规范相关的文章,有位读者提到了汽车电子行业的MISRA C标准,说这个很不错。 本次给大家找来了一篇汽车电子行业的MISRA C标准的文章一同学习下。 什么是MISRA? MISRA (The Motor Industry Software Reliability Ass…

Linux-文件系统管理实验2

1、将bin目录下的所有文件列表放到bin.txt文档中,并将一共有多少个命令的结果信息保存到该文件的最后一行。统计出文件中以b开头的所有命令有多少个,并将这些命令保存到b.txt文档中。将文档中以p结尾的所有命令保存到p.txt文件中,并统计有多少…

【linux】Ubuntu 22.04.3 LTS截屏

一、快捷键 交互式录屏 ShiftCtrltAltR 交互式截图 Print 对窗口进行截图 AltPrint 截图 ShiftPrint 快捷键可能取决于使用的桌面环境和个人的键盘快捷键设置。如果上述快捷键不起作用,可能需要检查系统设置中的键盘快捷键部分,以了解系统中截图的…

法线变换矩阵的推导

背景 在冯氏光照模型中,其中的漫反射项需要我们对法向量和光线做点乘计算。 从顶点着色器中读入的法向量数据处于模型空间,我们需要将法向量转换到世界空间,然后在世界空间中让法向量和光线做运算。这里便有一个问题,如何将法线…

问答领域的基本了解

问答领域是人工智能领域中的一个重要研究方向,旨在让计算机能够理解人类提出的问题,并以自然语言形式回答这些问题。问答系统可以应用于各种场景,包括搜索引擎、虚拟助手、智能客服等。 一.目标 目标: 问答系统的主要目标是使计…

逆向一个Go程序

前奏 事先声明,自导自演,纯属为了演示基本的逆向思维 用Go写一段模拟登录的代码: package mainimport ("fmt" )func main() {pass : ""fmt.Print("input password:")fmt.Scan(&pass)if pass "hel…

基于YOLOv3开发构建道路交通场景下CCTSDB2021交通标识检测识别系统

交通标志检测是交通标志识别系统中的一项重要任务。与其他国家的交通标志相比,中国的交通标志有其独特的特点。卷积神经网络(CNN)在计算机视觉任务中取得了突破性进展,在交通标志分类方面取得了巨大的成功。CCTSDB 数据集是由长沙…

柠檬Lemon测评机的配置和测试方法

柠檬Lemon测评机的配置和测试方法 只需3步,即可配置好柠檬 第一步:选择g++,点击下一步 第二步:找到g++的目录,添加编译器,点击下一步 第三步:检查结果,点击完成。(此时,配置完成) 只需3步,即可用柠檬做考试测试 第一步:新建比赛

如何实现公网访问GeoServe Web管理界面共享空间地理信息【内网穿透】

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现,利用GeoServer可以方便地发布地图数据,允许用户对要素数据进行更新、删除、插入…

普中STM32-PZ6806L开发板(资料收集...)

简介 逐渐收集一些开发过程中使用到的文档资料数据手册 DS18B20 数据手册 DS18B20 Datasheet 开发文档 STM32F1各种文档 https://www.st.com/en/embedded-software/stm32cubef1.html#documentation HAL库文档开发文档 你使用的HAL文档, 在STM32CubeMX生成过程的最下面有…

uniapp 解决安卓App使用uni.requestPayment实现沙箱环境支付宝支付报错

背景:uniapp与Java实现的安卓端app支付宝支付,本想先在沙箱测试环境测支付,但一直提示“商家订单参数异常,请重新发起付款。”,接着报错信息就是:{ "errMsg": "requestPayment:fail [pa…

基于springboot智慧食堂管理系统源码和论文

随着Internet的发展,人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化,网络化和电子化。网上管理,它将是直接管理“智慧食堂”系统的最新形式。本论文是以构建“智慧食堂”系统为目标,使用java技术制作&…

Spring之循环依赖底层源码(一)

文章目录 一、简介1. 回顾2. 循环依赖3. Bean的生命周期回顾4. 三级缓存5. 解决循环依赖的思路 二、源码分析三、相关问题1. Async情况下的循环依赖解析2. 原型Bean情况下的循环依赖解析3. 构造方法导致的循环依赖解析 一、简介 1. 回顾 前面首先重点分析了Spring Bean的整个…