Python教程(20)——python面向对象编程基本概念
面向对象
- 类和对象
- 初始化方法
- 属性和方法
- self关键字
- 继承
- 多态
面向对象(Object-oriented)是一种常用的程序设计思想,它以对象作为程序的基本单元,将数据和操作封装在一起,通过对象之间的交互来实现程序的功能。
在面向对象编程中,将问题抽象成对象,而对象可以拥有属性(数据)和方法(操作)。对象可以被看作是现实世界中的实体或概念,具有某种特定的状态和行为。通过封装、继承和多态等机制,可以实现代码的模块化、复用和灵活性。
上面的解释是非常的抽象,可能对于很多初学者来说,不是很好理解,但是没关系,后面学习过这章节之后,你就大概能理解了。,我们先来了解Python面向对象的一些基本概念,以便可以很好的掌握面向对象编程。
给出一段小代码,然后逐个来分析Python面向对象编程中的一些的基本概念。
class Person:def __init__(self, name, age):self.name = nameself.age = agedef 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是创建的具体的实例对象,可以创建多个,person1和person2都是创建的对象。
初始化方法
初始化方法(Constructor)是类中一个特殊的方法,它在创建对象时自动调用。在初始化方法中,可以对对象的属性进行初始化。在Python中,初始化方法的名称为__init__。
上面的__init__(self, name, age)也就是初始化方法,也可以称为构造函数,其中参数self不可省略。
属性和方法
属性(Attribute)是对象的特征或数据,方法(Method)是对象的行为或操作。对象的属性保存对象的状态,而方法定义了对象的行为。
上面例子的name和age就是定义的属性,say_hello就是定义的方法。更加具体的相关介绍后面会写。
self关键字
在类中定义方法时,方法的第一个参数必须是self。self表示对象本身,在方法内可以通过self访问对象的属性和方法。
继承
继承(Inheritance)是面向对象编程中的一个重要概念,它允许一个类从另一个类继承属性和方法。通过继承,子类可以重用父类的代码,并可以在子类中添加新的属性和方法。在Python中通过在类定的时候加括号的方式来实现继承class Student(Person)。
class Student(Person):def __init__(self, name, age, school):super().__init__(name, age) # 调用父类的初始化方法self.school = schooldef say_hello(self):super().say_hello() # 调用父类的方法print(f"我在{self.school}上学。")student1 = Student("一点的女儿", 5, "幼儿园")
student1.say_hello()
这个例子输出:
你好,我是一点的女儿,今年5岁。
我在幼儿园上学。
多态
多态(Polymorphism)是指一个对象可以引用不同类的实例,从而实现不同类的方法可以具有相同的行为。这可以通过继承和方法重写来实现。
class Animal:def make_sound(self):passclass 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) # 输出:喵喵喵!
我们可以传入不同的对象(Dog 或 Cat),但是函数 make_animal_sound 的调用方式却是一样的。
这种多态性使得我们可以编写更加灵活和可扩展的代码。当我们拓展程序中的新功能时,只需要创建新的派生类并重写相应的方法即可,而不用修改已有的代码。这大大降低了代码的耦合性,提高了代码的可维护性和可扩展性。
需要注意的是,面向对象编程不仅仅是这些基本概念的运用,还包括一些设计原则和模式等,用于指导和优化面向对象的软件开发。这些概念和原则一起构成了面向对象编程的完整体系。
**更多精彩内容,请关注同名公众:一点sir(alittle-sir)
相关文章:
Python教程(20)——python面向对象编程基本概念
面向对象 类和对象初始化方法属性和方法self关键字继承多态 面向对象(Object-oriented)是一种常用的程序设计思想,它以对象作为程序的基本单元,将数据和操作封装在一起,通过对象之间的交互来实现程序的功能。 在面向对…...
C# Winform教程(一):MD5加密
1、介绍 在C#中,MD5(Message Digest Algorithm 5)是一种常用的哈希函数,用于将任意长度的数据转换为固定长度的哈希值(通常是128位)。MD5广泛用于校验数据完整性、密码存储等领域。 2、示例 创建MD5加密…...
Mongodb使用指定索引删除数据
回顾Mongodb删除语法 db.collection.deleteMany(<filter>,{writeConcern: <document>,collation: <document>,hint: <document|string>} ) 删除语法中,除了指定过滤器外,还可以指定写入策略,字符序和使用的索引。 …...
虾皮怎么选品:虾皮(Shopee)跨境电商业务成功的关键步骤
在虾皮(Shopee)平台上进行跨境电商业务,选品是至关重要的一环。有效的选品策略可以帮助卖家更好地了解市场需求,提高销售业绩和客户满意度。以下是一些成功的选品策略,可以帮助卖家在虾皮平台上取得更好的业务成绩。 先…...
QML —— 使用Qt虚拟键盘示例(附完整源码)
示例效果 使用"虚拟键盘"注意 (例子的Qt版本:5.12.4) 注意一: /* 必须在main.cpp开始处加入如下代码,否则无法使用"虚拟键盘" */ qputenv(“QT_IM_MODULE”,QByteArray(“qtvirtualkeybo…...
Nacos 持久化及集群的搭建【微服务】
文章目录 一、统一配置管理二、微服务配置拉取三、配置热更新四、多环境共享配置五、Nacos 集群搭建1. 集群结构2. 初始化数据库3. 搭建集群 六、Nginx 反向代理七、启动项目测试 一、统一配置管理 案例练习的时候我们只有两个微服务,管理起来非常简单,但…...
win10下vscode+cmake编译C代码操作详解
0 工具准备 1.Visual Studio Code 1.85.1 2.cmake 3.24.01 前言 当我们只有一个.c文件时直接使用vscodeCode Runner插件即可完成编译,如果我们的工程很复杂包含多个.c文件时建议使用cmake来生成对应的make,指导编译器完成编译,否则会提示各…...
网络安全红队常用的攻击方法及路径
一、信息收集 收集的内容包括目标系统的组织架构、IT资产、敏感信息泄露、供应商信息等各个方面,通过对收集的信息进行梳理,定位到安全薄弱点,从而实施下一步的攻击行为。 域名收集 1.备案查询 天眼查爱企查官方ICP备案查询 通过以上三个…...
【基于openGauss2.1.0企业版安装X-Tuner参数调优工具】
【基于openGauss2.1.0企业版安装X-Tuner参数调优工具】 一、前提条件二、安装X-Tuner 2.1.0: 一、前提条件 已安装了openGauss2.1.0企业版 二、安装X-Tuner 2.1.0: 以root用户登录到服务器 安装以下依赖: yum -y groupinstall "Development tools" yum…...
SpringBoot+Vue轻松实现考试管理系统
简介 本系统基于 Spring Boot 搭建的方便易用、高颜值的教学管理平台,提供多租户、权限管理、考试、练习、在线学习等功能。主要功能为在线考试、练习、刷题,在线学习。课程内容支持图文、视频,考试类型支持考试、练习、问卷。 源码下载 网…...
详解Keras:keras.preprocessing.image
keras.preprocessing.image Keras 库中的一个模块,用于处理和增强图像数据,它提供了一些实用的函数,如图像的加载、预处理、增强等。 常用函数 1、load_img 用于加载图像文件,并返回一个 NumPy 数组表示该图像 示例 from ker…...
来瞅瞅Java 11都有啥新特性
第1章:引言 大家好,我是小黑!今天小黑要和咱们聊聊Java 11,这个在Java发展史上占有一席之地的版本。说起Java,咱们都知道,它是一门历史悠久又持续发展的编程语言。Java不仅因其“一次编写,到处…...
Copilot在IDEA中的应用:提升编码效率的得力助手
Copilot在IDEA中的应用:提升编码效率的得力助手 前言: 欢迎来到本篇博客,今天我们将深入探讨 GitHub Copilot 在 IntelliJ IDEA 中的应用。GitHub Copilot 是一款由 GitHub 与 OpenAI 共同开发的人工智能代码生成工具,它能够根据上下文提示…...
【Python】Excel不同sheet另存为不同CSV
我有一个excel,内有不同sheet,现在批量生成不通csv文件,并以sheet名命名,或根据sheet名调整命名。 # 读取新的Excel文件 df pd.read_excel(rD:\itm\data.xlsx, sheet_nameNone)# 遍历每个sheet,将其另存为不同的CSV文…...
软件测试|深入学习 Docker Logs
简介 Docker 是一种流行的容器化技术,它能够帮助用户将应用程序及其依赖项打包成一个可移植的容器。Docker logs 是 Docker 提供的用于管理容器日志的命令,本文将深入学习 Docker logs 的使用和管理,帮助用户更好地监测和解决容器问题。 Do…...
试除法求约数算法总结
知识概览 试除法求一个数的约数的时间复杂度是。 例题展示 题目链接 活动 - AcWing 系统讲解常用算法与数据结构,给出相应代码模板,并会布置、讲解相应的基础算法题目。https://www.acwing.com/problem/content/871/ 题解 用试除法求约数,…...
[JavaWeb玩耍日记] 数据库
mysql版本:5.7.24 使用Navicat for MySQL辅助学习(2015年版),这个在粘贴本博客的块引用内容时会有额外的不可见内容导致sql运行出问题,不过有影响的地方笔者已排除 目录 一.数据库创建 二.使用数据库与创建表 三.表内列的数据类型 四.修…...
rime中州韵小狼毫 inputShow lua Translator 输入字符透传翻译器
在 rime中州韵小狼毫 help lua Translator 中我们分享了如何使用 lua 脚本定义一个 translator,并以 五笔・拼音 为例引用了该 translator,并且达到了预期的效果。 今天,我们继续通过 lua 脚本为 rime中州韵/小狼毫 输入法打造一个 translat…...
【RockChip | RV1126】学习与开发
【RockChip | RV1126】学习与开发 文章目录 【RockChip | RV1126】学习与开发1. 资料1. 资料 您好,这是关于A191型RV1126的资料包,请您及时接收哦~链接: https://pan.baidu.com/s/1FXWVxa27Q78nI78d2QKlBQ?pwd=j7mk 提取码: j7mk 若您在开发过程中遇到技术问题,需要帮助时:…...
copilot在pycharm的应用
Copilot在PyCharm中的应用 一、引言 随着人工智能技术的飞速发展,AI在编程领域的应用也越来越广泛。Copilot,作为一款由微软开发的AI编程助手,已经引起了广大开发者的关注。它利用深度学习技术,通过分析大量开源代码,…...
Unity 2019.4.7f1实战:从零复刻Flappy Bird,搞定PC/Web/Android三端发布
Unity 2019.4.7f1实战:从零复刻Flappy Bird,搞定PC/Web/Android三端发布 当你第一次打开Unity时,面对那个空荡荡的3D场景,可能会有些不知所措。但别担心,今天我们就用这个看似简单的Flappy Bird游戏,带你走…...
现代C++中的音频引擎缓冲调度实践
现代C中的音频引擎缓冲调度实践音频引擎与普通后台任务系统不同,它更强调稳定时序和低抖动。哪怕平均性能很好,只要某次回调超时,就会产生爆音、卡顿或丢帧。因此 C 音频处理的重点往往是缓冲调度和实时约束。一个简化的音频回调接口…...
ngx_http_read_request_header
1 定义 ngx_http_read_request_header 函数 定义在 ./nginx-1.24.0/src/http/ngx_http_request.cstatic ssize_t ngx_http_read_request_header(ngx_http_request_t *r) {ssize_t n;ngx_event_t *rev;ngx_connection_t *c;ngx_http_…...
观察Taotoken用量看板如何帮助团队控制API成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察Taotoken用量看板如何帮助团队控制API成本 作为团队的技术负责人,引入大模型API后,成本的可观测性与可…...
基于MCP协议构建Jira连接器:打通AI助手与项目管理的技术实践
1. 项目概述:当Jira遇上MCP,一个连接器如何重塑项目管理工具链如果你和我一样,长期在软件研发一线摸爬滚打,那么对Jira这个名字一定不会陌生。它几乎是敏捷开发、缺陷跟踪和项目管理的代名词,无数团队用它来规划冲刺、…...
Verilog时钟分频:从原理到工程实践,避坑指南与最佳方案
1. 项目概述:为什么时钟分频是数字设计的基石在数字电路和FPGA设计里,时钟信号就像是整个系统的心跳。它驱动着寄存器、状态机和数据流,确保所有操作在正确的节拍下同步进行。但现实情况是,我们手头的时钟源往往只有一个固定的频率…...
DayZ社区离线模式:5步搭建专属单人末日世界
DayZ社区离线模式:5步搭建专属单人末日世界 【免费下载链接】DayZCommunityOfflineMode A community made offline mod for DayZ Standalone 项目地址: https://gitcode.com/gh_mirrors/da/DayZCommunityOfflineMode DayZ社区离线模式为玩家提供了一个完整的…...
当声带萎缩遇上AI建模:ElevenLabs老年女性语音不可忽视的5项生理声学特征补偿技术
更多请点击: https://intelliparadigm.com 第一章:声带萎缩与老年女性语音建模的交叉挑战 随着人口老龄化加剧,构建高保真、个体化老年女性语音合成模型面临独特的生理—声学耦合难题。声带萎缩导致基频降低、抖动率(jitter&…...
VScode界面突然变模糊?别急着换眼镜,先检查NVIDIA控制面板这个设置
VScode界面突然变模糊?三步精准定位显卡驱动的"视觉陷阱" 你是否曾在深夜赶代码时,突然发现VScode的界面变得像隔了层毛玻璃?文字边缘渗出光晕,图标轮廓开始"融化",仿佛显示器突然患上了散光。这种…...
Imagine Engine时间线管理:掌握游戏节奏的完整教程 [特殊字符]
Imagine Engine时间线管理:掌握游戏节奏的完整教程 🎮 【免费下载链接】ImagineEngine A project to create a blazingly fast Swift game engine that is a joy to use 🚀 项目地址: https://gitcode.com/gh_mirrors/im/ImagineEngine …...
