Python入门Day14:面向对象编程初步(OOP入门)

学习目标:

  • 理解面向对象编程(OOP)的基本思想:类,对象
  • 掌握类的定义,构造方法,实例属性和方法
  • 熟悉self的含义与作用
  • 学会用类组织和封装代码,初步构建自己的“对象世界”

一、什么是面向对象?

面向对象(Object-Oriented Programming)是一种将数据和操作数据的方法组织在一起的编程范式。

术语含义
类(class)模板,蓝图,定义了对象的属性和行为
对象(object)类的具体实例,真实存在的“某一个”
方法类中定义的函数。作用于对象本身
属性存储对象状态的变量(通常通过构造函数设定)

 二、定义类和创建对象

1.定义一个最简单的类

class Student:pass

用class类名:定义一个类,类名一般大写开头。pass表示“占位”

2.创建对象(实例)

stu1 = Student()
print(stu1)     # 输出:<__main__.Student object at ...>

类名加括号即为“创建对象”,也叫实例化

三、构造函数(init)与实例属性

class Student:def __init__(self,name,age):self.name = name    #实例属性self.age = age#创建对象
stu1 = Student("Alice",20)
print(stu1.name)   # Alice
print(stu1.age)    # 20

注释说明:

  • __init__是构造方法,创建对象时自动调用;
  • self代表当前实例本身;
  • self.name是对象的属性,每个对象独立拥有;
  • Student("Alice",20)会自动把"Alice"传给name,20传给age;

四、定义实例方法 

class Student:def __init__(self,name,age):self.name = nameself.age = agedef introduce(self):print(f"我是{self.name},今年{self.age}岁")stu1 = Student("Bob",21)
stu1.introduce()

方法必须以self作为第一个参数,调用时不用写self

五、练习:自定义类管理多个对象

定义一个Book类

class Book:def __init__(self,title,author,price):self.title = titleself.author = author self.price = pricedef info(self):return f"《{self.title}》-{self.author},售价{self.price}元"# c创建多个对象
book1 = Book("三体","刘慈欣",49)
book2 = Book("活着",“余华”,39)#输出信息
print(book1.info())
print(book2.info())

输出:

《三体》 - 刘慈欣,售价 49 元
《活着》 - 余华,售价 39 元

六、OOP初学者易错点

错误用法正确用法原因
name =nameself.name = name未保存到对象属性中
忘写self参数def introduce(self)Python方法必须有self参数
stu1.introduce(self)stu1.introduce()调用时不需要传self
多个对象共享数据混乱每个对象独立数据属性属于实例,不要用类变量混用

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

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

相关文章

日志和指标标签规范化方案

好的&#xff0c;设计一个有效的日志和指标标签规范化方案对于构建可观测性强、易于维护、关联分析顺畅的系统至关重要。混乱的标签命名会极大增加查询、聚合、告警和故障排除的难度。 以下是一个综合性的标签规范化方案建议&#xff0c;结合了行业最佳实践&#xff1a; 核心目…

Windows和Linux的tree工具

目录 1.前言 2.Linux的tree工具 2.1.安装tree 2.2.常用命令与参数 2.3.常见应用场景 2.4.注意事项 3.Windows的tree工具 3.1.基础语法 3.2.核心参数详解 3.3.常见应用场景 3.4.局限性与增强方案 4.Windows 与 Linux tree 的核心差异 5.tree工具优势 5.总结 相关…

[echarts] 更新数据

option {title: { text: 销售数据 },tooltip: { trigger: axis },legend: { data: [销量, 库存] },xAxis: {type: category,data: [衬衫, 羊毛衫, 雪纺衫]},yAxis: { type: value },series: [{ name: 销量, type: bar, data: [5, 20, 36] },{ name: 库存, type: line, data: […

通过el-image实现点击文字查看图片,及其图片列表

场景一&#xff1a;表格中有时候会有点击文字查看图片的功能&#xff08;因为表格的一个单元格不方便显示多个图片&#xff09;如下图所示&#xff1a;对于这个需求&#xff0c;我们可以应对的方案是&#xff1a;在文字旁边写一个el-image图默认显示多张图片中的第一张&#xf…

003 实习(前端jquery之轮播图,学校网页)

web前端,查询官网:w3schoolHTML:负责网页结构&#xff08;页面元素和内容&#xff09;CSS:负责网页的表现&#xff08;网页元素的外观、位置等页面样式&#xff0c;如颜色&#xff0c;大小&#xff09;JAVAScript:负责网页的行为&#xff08;交互效果&#xff09;<a>:超链…

Mysql group by

临时表与内存表 内存表是 Memory 引擎表&#xff0c;表的数据行都在内存。 临时表可以使用各种引擎。 临时表是线程私有表&#xff0c;其他线程不可见&#xff0c;不需考虑重名问题。 session 结束时临时表会被自动删除。 如果 Binlog_format row&#xff0c;则临时表语句不进…

Linux(15)——进程间通信

目录 一、进程间通信的介绍 ✍️进程间通信的目的 ✍️进程间通信的本质 进程间通信的分类 ✍️管道 ✍️System V IPC ✍️POSIX IPC 二、管道 &#x1f9e0;什么是管道 ✍️匿名管道 &#x1f4dd;匿名管道的原理 &#x1f4dd;pipe函数 &#x1f4dd;匿名管道…

【Flutter】双路视频播放方案

最近在做双路视频播放&#xff0c;就是在一个页面播放两个视频。我遇到的问题就是音频焦点冲突问题&#xff0c;在下面说明。什么是双路视频播放&#xff08;来自AI&#xff09;双路视频播放&#xff08;Dual-Video Playback&#xff09;&#xff0c;从字面上理解&#xff0c;就…

笔试——Day25

文章目录第一题题目思路代码第二题题目&#xff1a;思路代码第三题题目&#xff1a;思路代码第一题 题目 笨小猴 思路 模拟 统计每个字符出现的次数&#xff0c;用最大减最小&#xff0c;判断是不是质数&#xff1b; 质数的判断使用试除法&#xff1b; 代码 第二题 题目&…

【C#学习Day15笔记】拆箱装箱、 Equals与== 、文件读取IO

前言在C#第15天的学习中&#xff0c;我深入探索了类型转换机制、对象比较原理和文件操作技术三大核心主题。这些知识是构建高效、健壮程序的关键基础。本文完整保留我的课堂实践代码和命名体系&#xff0c;通过结构化梳理帮助大家掌握这些核心概念。所有代码示例均来自我的实际…

发电类电力业务许可证申请条件

基本条件&#xff1a;法人资格&#xff1a;申请人必须是依法注册的企业法人。 财务能力&#xff1a;应具有与所申请从事的电力业务相适应的财务能力。 专业人员要求&#xff1a;生产运行负责人、技术负责人、安全负责人和财务负责人需具备至少3年以上与申请从事的电力业务相关的…

JavaScript 高效入门指南:从基础到实战(VSCode 版)

废话不多说&#xff0c;直接上干货&#x1f600; 一、先搞定工具&#xff1a;VSCode 配置成「JS 开发神器」 工欲善其事&#xff0c;必先利其器。用 VSCode 写 JavaScript&#xff0c;这几个配置能让你效率翻倍&#xff1a; 1. 必装插件&#xff08;直接在 VSCode 插件商店搜…

《人形机器人的觉醒:技术革命与碳基未来》——类人关节设计:柔性驱动革命之液压人工肌肉

目录&#xff1a;一、人工肌肉的种类及人形机器人适用情况二、人形机器人用人工肌肉科研机构及其最新成果进展三、液压人工肌肉种类及工作机制四、液压人工肌肉适用人形机器人的性能要求和局限性五、液压人工肌肉材料技术进展及其限制与突破六、波士顿动力Spot的液压静液传动系…

26数据结构-顺序表

&#x1f4cc;有序顺序表的合并 #define MAX_SIZE 20 struct SeqList {int data[MAX_SIZE];int length; }; void mergeArray(SeqList &L1,SeqList &L2,SeqList &L) {int i0,j 0;while(i<L1.length && j<L2.length){if(L1.data[i]<L2.data[j])L.da…

25电赛e题 控制激光开关电路

e题明确说了禁止使用继电器控制&#xff0c;所以需要自己搭建一个mos管控制电路这里使用mos管来驱动GPIO → 电阻(220Ω) → MOSFET栅极(如IRF520N)MOSFET漏极接激光器正极MOSFET源极接地激光器负极直接接电源连接方式如下这里r36为栅极电阻&#xff0c;需要跟你们使用的mos配合…

ubuntu apt源报错?

报错原因&#xff1a;一、网络连接方面1.网络不通畅&#xff08;常见&#xff09;简单来说就是你的虚拟机连不上网&#xff0c;这时候你应该检查自己的ip 是不是dhcp自动获取的&#xff0c;或者你的网络配置是否有误。2.DNS 解析故障&#xff1a;DNS 服务器配置错误或 DNS 服务…

Scene as Occupancy

OccNet https://github.com/OpenDriveLab/OccNet Scene as Occupancy 提出了一种新的场景表示方法&#xff0c; 利用环视摄像头&#xff0c;采用级联和时序体素编码的方式来重建三维Occ场景。Method 1&#xff09;提出的OCCNet首先重建占据描述符&#xff0c;目标是为支持下游任…

Linux基础复习:字符输入与输出

该文仅针对自身对Linux基础知识不足的地方进行补充扩展&#xff0c;便于巩固。终端的输入和输出由字符设备管理。1、查看当前字符设备# 查看当前bash进程 [rootopenEuler-1 ~]# psPID TTY TIME CMD9662 pts/1 00:00:00 bash9938 pts/1 00:00:00 ps# 该目录存放了…

【初识数据结构】CS61B中的基数排序

本教程介绍 CS61B 中的基数排序&#xff0c;这是一种可以在某些情况下甚至超越归并排序、快速排序的特殊的排序方法&#xff0c;但是牺牲了内存空间计数排序 连续编号情形 我们需要对一个编号从 0 到 11 的表进行排序实际上我们可以拿出另一张同样大小的空白表&#xff0c;在遍…

ReAct模式深度解析:构建具备推理能力的AI智能体架构

本文深入剖析ReAct(Reasoning+Acting)架构设计模式,揭示如何通过推理与行动循环构建具备自主决策能力的AI智能体,并展示其在复杂问题求解中的革命性突破。 引言:从工具调用到自主决策的进化 传统AI系统面临的核心瓶颈: #mermaid-svg-orlnKyviyW86xIJZ {font-family:&quo…