【Python 入门】面向对象基础:类、对象、成员变量与构造方法
文章目录前言一、面向对象思想入门二、类的定义成员变量与成员方法2.1 基础语法2.2 self 关键字详解2.3 完整示例学生类三、类与对象的示例闹钟类四、构造方法 __init__4.1 为什么需要构造方法4.2 基础用法4.3 注意事项五、入门易错点总结六、总结前言面向对象是 Python 编程的核心思想之一它模拟现实世界的事物描述方式将属性数据和行为功能封装到类中通过创建对象来完成业务逻辑。本文从最基础的类定义、对象创建讲起带你掌握成员变量、成员方法、self关键字与构造方法夯实面向对象入门基础。一、面向对象思想入门在程序中记录数据如果只用字典、列表等基础结构数据和行为是分离的不仅写法混乱也难以复用。面向对象的思路和现实生活一致设计表格类先定义好模板规定要记录哪些信息、具备哪些功能打印表格创建对象基于模板生成一个个独立的实体填写表格属性赋值给每个实体填充专属数据简单总结类是设计图纸对象是基于图纸生产的实体一个类可以生成无数个对象每个对象拥有独立的数据。二、类的定义成员变量与成员方法2.1 基础语法Python 中使用class关键字定义类类由两部分组成成员变量属性类中定义的变量用于存储数据成员方法行为类中定义的函数用于实现功能语法格式class类名:# 成员变量变量名值# 成员方法def方法名(self,形参1,形参2...):方法体2.2 self 关键字详解成员方法的第一个参数必须是self这是 Python 面向对象的核心规则self代表当前对象自身调用方法时self会由 Python 自动传入无需手动传参在方法内部访问成员变量必须通过self.变量名的方式补充说明self只是约定俗成的命名你可以改成其他名称但行业通用self不建议修改。2.3 完整示例学生类classStudent:# 成员方法defsay_hi(self):print(f大家好我叫{self.name})defsay_hi2(self):# 修复了原代码中括号位置错误的语法问题print(f大家好我是{self.name}正在学习Python)# 创建两个独立的对象stu1Student()stu1.name张三stu1.say_hi()stu2Student()stu2.name王五stu2.say_hi2()运行结果大家好我叫张三 大家好我是王五正在学习Python三、类与对象的示例闹钟类我们用一个更贴近现实的案例理解 “一个类生成多个对象” 的逻辑classClock:# 成员变量idNone# 序列号priceNone# 价格# 成员方法响铃defring(self):importwinsound# 参数频率(赫兹)、持续时间(毫秒)winsound.Beep(2000,3000)print(闹钟正在响铃)# 创建第一个闹钟对象clock1Clock()clock1.id10001clock1.price9.99print(f闹钟1序列号{clock1.id}价格{clock1.price})clock1.ring()# 创建第二个闹钟对象clock2Clock()clock2.id10002clock2.price19.99print(f闹钟2序列号{clock2.id}价格{clock2.price})clock2.ring()易错提醒winsound是Windows 系统专属模块Linux/macOS 环境无法运行跨平台场景建议替换为打印提示或其他音频库。四、构造方法__init__4.1 为什么需要构造方法上面的代码中我们需要手动逐个给属性赋值当属性很多时代码非常繁琐。Python 提供了__init__构造方法创建对象时自动执行可以接收参数自动给对象属性赋值方法名前后必须各有两个下划线属于魔术方法的一种4.2 基础用法classStudent:# 构造方法创建对象时自动调用def__init__(self,name,age,tel):self.namename# 给当前对象的name属性赋值self.ageage self.teltelprint(Student对象创建成功)# 创建对象时直接传参自动完成属性赋值stuStudent(张三,22,1008611)print(stu.name)print(stu.age)print(stu.tel)4.3 注意事项构造方法也是成员方法第一个参数必须是self无需提前在类中声明成员变量在__init__中通过self.xxx赋值即可自动创建实例属性类中定义的name None是类属性所有对象共享self.name是实例属性每个对象独有注意区分五、入门易错点总结忘记写 self成员方法第一个参数必须加 self否则调用时会报错TypeError方法内访问属性不加 self直接写name会被识别为局部变量必须写self.name构造方法拼写错误是__init__两个下划线不是_init_或init对象创建语法对象名 类名()括号不能丢否则拿到的是类本身而非对象六、总结面向对象核心类是模板对象是实体一个类可生成多个对象类 成员变量存数据 成员方法实现功能self代表当前对象自身是方法的第一个参数调用时自动传入__init__构造方法用于对象初始化创建对象时自动执行可快速赋值属性

相关新闻

多智能体系统运行时置信度校准:从静态评估到动态协同的MARGIN框架解析

多智能体系统运行时置信度校准:从静态评估到动态协同的MARGIN框架解析

1. 从“各自为战”到“协同作战”:多智能体协作的置信度难题在AI领域,尤其是大模型驱动的多智能体系统里,我们正面临一个从“单兵作战”到“集团军协同”的范式转变。想象一下,你手头有几个顶尖的专家模型:一个擅长文本…

2026/8/23 6:56:37 阅读更多 →
SAP资产会计核心:资产购置流程与资产价值日深度解析

SAP资产会计核心:资产购置流程与资产价值日深度解析

如果你在SAP系统中处理固定资产,是否曾遇到过这样的困惑:明明资产已经采购到货,财务却无法及时入账?或者资产价值在系统中“飘忽不定”,导致月度折旧计算总是对不上?这些问题的根源,往往不在于操…

2026/8/23 6:56:37 阅读更多 →
大龄程序员转型AI:挑战、资源与求职策略

大龄程序员转型AI:挑战、资源与求职策略

1. 大龄程序员转型AI领域的现实挑战与机遇35岁以上的程序员群体正面临职业生涯的十字路口。传统开发岗位的年龄焦虑与技术迭代压力,促使越来越多人将目光投向AI大模型这个新兴领域。我接触过不少转型案例,发现这个群体具有独特优势:十年以上的…

2026/8/23 6:55:37 阅读更多 →

最新新闻

华为ENSP网络仿真工具安装与排错全指南:从VLAN实验到替代方案

华为ENSP网络仿真工具安装与排错全指南:从VLAN实验到替代方案

1. 先搞清楚 ENSP 到底是什么,以及它现在还能不能用如果你正在准备网络工程师认证,或者需要模拟华为网络设备来做实验,那你大概率绕不开 ENSP 这个名字。ENSP,全称是 Enterprise Network Simulation Platform,是华为官…

2026/8/23 7:39:49 阅读更多 →
卡方检验原理与实战:从拟合优度到独立性检验的多语言实现

卡方检验原理与实战:从拟合优度到独立性检验的多语言实现

1. 卡方分布:从理论到实战的桥梁在数据建模和统计分析的世界里,我们经常需要判断一个样本是否服从某个理论分布,或者检验两个分类变量之间是否存在关联。比如,工厂质检员想知道一批产品的次品率是否与生产线有关,市场分…

2026/8/23 7:39:49 阅读更多 →
Angular7,9,学习笔记一 创建项目,基本语法

Angular7,9,学习笔记一 创建项目,基本语法

1.创建项目2.目录结构3.app4.创建组件5.语法5.1绑定属性5.2绑定html5.3.ngFor循环数据5.4.引入图片5.5条件判断5.6样式5.7管道5.8事件5.9.表单1.10双向数据绑定,只是针对表单在中引入

2026/8/23 7:39:49 阅读更多 →
Mac Studio本地部署120B大模型实战:低成本私有AI开发环境搭建

Mac Studio本地部署120B大模型实战:低成本私有AI开发环境搭建

在Mac Studio上本地部署一个120B参数的大语言模型,听起来像是技术极客的“炫技”行为,还是真的具备实用价值?当“大模型部署”成为开发者圈子的热门话题,我们听到的往往是“需要多张A100/H100”、“显存动辄上百GB”、“电费惊人”…

2026/8/23 7:39:49 阅读更多 →
C++可变参类模板:从递归特化到类型安全容器的实现

C++可变参类模板:从递归特化到类型安全容器的实现

1. 从“万能容器”到“类型安全的参数打包”:可变参类模板的动机在C模板编程的日常里,我们经常会遇到一个经典需求:设计一个能容纳任意数量、任意类型数据的容器或工具类。你可能会立刻想到std::tuple,它确实是一个完美的解决方案…

2026/8/23 7:39:49 阅读更多 →
哈希表平均查找长度计算:拉链法、线性探测与平方探测实战解析

哈希表平均查找长度计算:拉链法、线性探测与平方探测实战解析

1. 项目概述:从“平均查找长度”说起在数据结构与算法的世界里,我们经常需要评估一个查找算法的效率。当面试官问你“哈希表的平均查找长度怎么算?”,或者你在优化一个高频查询的缓存系统时,一个核心的量化指标就会浮出…

2026/8/23 7:38:48 阅读更多 →

日新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:00:50 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:00:50 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:00:50 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/22 18:08:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/22 7:31:03 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/22 3:22:48 阅读更多 →