Python 类:探索面向对象编程的奇妙世界

在 Python 中,类是一种强大的工具,可以让你更有组织地编写代码,实现真正的面向对象编程。

本篇文章将详细介绍 Python 类的知识点和使用方法,通过通俗易懂的解释和使用案例,帮助大家轻松理解并掌握类的奥秘。

1、类和对象的基础

1.1 类的定义

在 Python 中,通过 class 关键字可以定义一个类:

class Dog:def __init__(self, name, age):self.name = nameself.age = agedef bark(self):print(f"{self.name} 汪汪叫!")
  • init 方法是一个特殊的方法,用于初始化对象的属性。

  • self 表示对象本身,类似于其他语言中的 this。

通用的类模版如下:

class 类名称:def __init__(self, 参数):self.name = name  #参数赋值定义def 方法名(self):# 具体动作

就像游戏中创建角色,去定义它的属性和能力。

1.2 对象的创建和使用
通过类可以创建对象,每个对象都是类的实例:

my_dog = Dog("Buddy", 3)
my_dog.bark()  # 输出:Buddy 汪汪叫!

当我们给类传入具体的参数后,就创建了一个具体的对象。

就像我们定义了某类游戏角色的属性和能力后,我们需要把具体的属性值赋予给它才能真正应用。

如上,我们先定义了一个狗的大类,但类中狗的名字和年龄需要我们真正赋值的时候,才完成了一个对象的创建。

2、类的属性和方法

2.1 属性

类中的变量称为属性,用于存储对象的状态(相当于角色的属性):

class Circle:def __init__(self, radius):self.radius = radiusdef area(self):return 3.14 * self.radius ** 2

2.2 方法
类中的函数称为方法,用于定义对象的行为(相当于角色的技能):

my_circle = Circle(5)
print(my_circle.area())  # 输出:78.5

3、继承和多态

3.1 继承
继承允许一个类继承另一个类的属性和方法:

class Cat(Dog):def purr(self):print(f"{self.name} 喵喵叫!")

这就类似于能力的传承,下一代继承了上一代的全部非私有属性和能力

比如,新建的猫类继承了狗的名字和年龄属性,以及汪汪叫的能力,同时自己也会喵喵叫。

在这里插入图片描述
3.2 多态
多态允许不同类的对象对相同的方法做出响应:

#创建狗类
class Dog:def __init__(self, name, age):self.name = nameself.age = agedef bark(self):print(f"{self.name} 汪汪叫!")#创建猫类
class Cat:def __init__(self, name, age):self.name = nameself.age = agedef bark(self):print(f"{self.name} 喵喵叫!"#多态统一方法
def animal_sound(animal):animal.bark()my_pet = Dog("Fido", 2)
animal_sound(my_pet)  # 输出:Fido 汪汪叫!my_pet = Cat("Whiskers", 1)
animal_sound(my_pet)  # 输出:Whiskers 喵喵叫!

也就是如果两个类有相同的方法,我们可以用新的方法把他们统一起来,形成一个集合。

如上,如果猫类,狗类都有bark()的方法,那可以用叫声这一类方法把他们统一起来,从而可以把叫声统一在一起供使用。

在这里插入图片描述

4、封装

封装是将对象的属性和方法限制在类内部,防止外部直接访问。在 Python 中,使用 _ 表示属性是私有的:

class BankAccount:def __init__(self, balance):self._balance = balancedef get_balance(self):return self._balancedef deposit(self, amount):if amount > 0:self._balance += amount

如上我们定义了一个银行类,并且balance属性是私有的

进行如下操作:
在这里插入图片描述
可以看到实例化类后,并没法直接访问对象的属性。

有所收益的话,感谢关注,持续更新,一起进步~

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

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

相关文章

封装带插槽的表格

子组件 <template><div><table><thead><tr><th v-for"col,colIndex in columns" :key"colIndex">{{ col.title }}</th></tr></thead><tbody v-if"instList.length >0"><tr …

Altair 电子可靠性解决方案

原文链接&#xff1a;Altair 电子可靠性解决方案

fpga rom 初始化文件的一些心得

目录 可能遇到的问题 问题 解决方案 rom的初始化 用途 文件类型 如何生成初始化文件 示例 Altera Xilinx 可能遇到的问题 问题 altera FPGA的rom找不到初始化文件&#xff0c;编译过程会提示类似的问题 Error(127001): Cant find Memory Initialization File or He…

运行游戏找不到x3daudio1_7.dll怎么解决?教你如何快速修复的教程

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“x3daudio1_7.dll丢失”。这个错误提示可能让我们感到困惑和烦恼&#xff0c;但是不用担心&#xff0c;本文将为您介绍x3daudio1_7.dll丢失的原因以及五种修复方法&#xff0c;帮助您解决这…

Nginx(缓存机制)

对于性能优化而言&#xff0c;缓存是一种能够大幅度提升性能的方案&#xff0c;因此几乎可以在各处都能看见缓存&#xff0c;如客户端缓存、代理缓存、服务器缓存等等&#xff0c;Nginx的缓存则属于代理缓存的一种。对于整个系统而言&#xff0c;加入缓存带来的优势额外明显&am…

Redis Desktop Manager for Mac:高效管理Redis数据的必备工具

Redis是一种快速、可扩展的内存数据库&#xff0c;被广泛应用于缓存、消息队列和实时分析等领域。而Redis Desktop Manager for Mac作为一款专为Mac用户设计的Redis桌面管理工具&#xff0c;为用户提供了高效便捷的方式来管理和操作Redis数据。 首先&#xff0c;Redis Desktop…

【已解决】xxljob连接报错HTTP 302(HTTP 401账号或密码错误)

目录 问题现象&#xff1a; 问题分析&#xff1a; 1、密码中的特殊字符。 2、密码长度问题。 解决方法&#xff1a; 拓展&#xff1a; 问题现象&#xff1a; 今天在生产环境使用xxljob任务调度来创建并执行任务时&#xff0c;出现了程序报错&#xff1a; 通过查询xxljob日志…

降本增笑?滴滴史上最严重服务故障,裁员真不能裁测试

2023 年 11 月 27 日晚间&#xff0c;滴滴因系统故障导致 App 服务异常&#xff0c;不显示定位且无法打车。11 月 27 日晚&#xff0c;滴滴出行进行了回复&#xff1a;非常抱歉&#xff0c;由于系统故障。 2023 年 11 月 28 日早间&#xff0c;滴滴出行消息称&#xff0c;网约…

Spring AOP 概念及其使用

目录 AOP概述 什么是AOP&#xff1f; 什么是Spring AOP ? Spring AOP 快速入门 1.引⼊ AOP 依赖 2.编写AOP程序 Spring AOP 核心概念 1.切点 2.连接点 3.通知 4.切面 通知类型 注意事项: PointCut&#xff08;定义切点&#xff09; 切面优先级 Order 切点表达…

Java中的Future源码讲解

JAVA Future源码解析 文章目录 JAVA Future源码解析前言一、传统异步实现的弊端二、what is Future ?2.1 Future的基本概念2.2Future 接口方法解析2.2.1 取消任务执行cancel2.2.2 检索任务是否被取消 isCancelled2.2.3 检索任务是否完成 isDone2.2.3 检索任务计算结果 get 三、…

Windows server 2019 域环境部署

环境准备 准备3台服务器&#xff0c;配置都是8g2核&#xff0c;50g硬盘&#xff0c;操作系统版本Windows Server 2019 Datacenter 域服务器&#xff1a;adc&#xff0c;192.168.56.120服务器1&#xff1a;server1:&#xff0c;192.168.56.121服务器2&#xff1a;server2&…

新媒体营销教学模拟实训平台解决方案

一、背景与目标 随着新媒体的快速发展&#xff0c;营销人才需求旺盛&#xff0c;而具备新媒体营销能力的人才供给却相对不足。为了解决这一矛盾&#xff0c;本方案旨在构建一个新媒体营销教学模拟实训平台&#xff0c;帮助学生掌握新媒体营销的实际操作技能&#xff0c;提高就…

windows彻底卸载VMware虚拟机

右键停止这些服务 在任务管理器中也结束vmware 在控制面板中卸载 找到注册表 然后在【software】目录下找到【VMware&#xff0c;Inc】&#xff0c;然后选中右键删除&#xff1b; 确保C盘中也没了

关于工业级交换机的分类,你知道多少?

工业级交换机是指专为工业控制领域设计的以太网交换设备。工业级交换机具备电信级的性能特征&#xff0c;能够在恶劣的工作环境下持久耐用。我们的产品系列非常广泛&#xff0c;可以灵活配置各种不同类型的端口&#xff0c;以满足工业领域的多样化使用需求。该产品具有宽温设计…

2023年文章生成器推荐

2023年即将结束&#xff0c;今年可以说是大语言模型独领风骚的一年&#xff0c;对于内容创作来说&#xff0c;文章生成类的工具也发生了变化。今天给大伙介绍一些超赞的免费文章生成器&#xff0c;让你在内容创作的路上事半功倍。有了这些神奇的工具&#xff0c;你将能够轻松应…

如何使用内网穿透工具实现公网访问GeoServe Web管理界面

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

多波束EM2040D甲板单元更换CPU主板记录

前段时间多波束EM2040D甲板单元的CPU主板到货了。趁着船刚好靠港避风&#xff0c;我们带着这块主板去替换之前借来EM2040C的CPU主板。 1、CF卡替换问题 老主板有个CF卡&#xff0c;见下图。最好的解决方法就是将老CF卡替换新CPU主板上的新CF卡&#xff0c;因为这样改动最小。…

AI大模型专题:北京市人工智能行业大模型创新应用白皮书

今天分享的是人工智能系列深度研究报告&#xff1a;《AI大模型专题&#xff1a;北京市人工智能行业大模型创新应用白皮书》。 &#xff08;报告出品方&#xff1a;北京市科学技术委员会、中关村科技园区管理委员会&#xff09; 报告共计&#xff1a;72页 海量/完整电子版/报…

TI radar_toolbox中的文档说明

分享ti雷达工具箱中的文档&#xff0c;如下图所示 其中software_guides中内容如下 using_uniflash_with_mmwave.html&#xff1a;使用Uniflash烧录bin文件using_ccs_debug.html&#xff1a;使用CCS连接EVM板进行debugUnderstanding_UART_Data_Output_Format.html&#xff1a;输…