尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

8.3 类的详解

8.3 类的详解
📅 发布时间:2026/6/20 6:57:29

文章目录

  • 前言
  • 一、Python中类的定义
  • 二、类的命名
  • 三、类的构造函数
  • 四、定义类的方法(函数)
  • 五、类的继承

前言

本文主要介绍Python中类的定义、类的命名、类的构造函数、定义类的方法以及类的继承等知识点。


一、Python中类的定义

在Python中,类是通过class关键字定义的,用于创建具有相同属性和方法的对象。

python# 基本语法class类名:# 类的内容pass# 示例:定义一个简单的类classDog:pass

二、类的命名

类名通常遵循大驼峰命名法(PascalCase):

  1. 每个单词的首字母大写
  2. 不使用下划线
  3. 应该具有描述性,明确表示类的用途
python# 正确的类名示例classStudent:passclassBankAccount:passclassShoppingCart:pass# 不推荐的类名classstudent:# 应首字母大写passclassSTUDENT:# 不应全部大写passclassstudent_info:# 应使用大驼峰,而不是下划线pass

三、类的构造函数

构造函数__init__()是一个特殊方法,在创建类的新实例时自动调用:

  1. 用于初始化对象的属性
  2. 第一个参数必须是self(指向实例本身)
  3. self参数不需要手动传递,Python会自动处理
pythonclassStudent:# 构造函数def__init__(self,name,age,student_id):# 初始化实例属性self.name=name self.age=age self.student_id=student_id self.grades=[]# 可以设置默认值# 另一个示例:带默认参数的构造函数def__init__(self,name,age,student_id=None):self.name=name self.age=age self.student_id=student_idorf"STU{abs(hash(name))%10000:04d}"# 创建对象student1=Student("张三",20,"S001")student2=Student("李四",21)# student_id使用默认值

四、定义类的方法(函数)

类方法是定义在类中的函数,第一个参数通常是self:

pythonclassBankAccount:# 构造函数def__init__(self,account_holder,initial_balance=0):self.account_holder=account_holder self.balance=initial_balance self.transactions=[]# 实例方法defdeposit(self,amount):"""存款方法"""ifamount>0:self.balance+=amount self.transactions.append(f"存款: +{amount}")returnf"存款成功!当前余额:{self.balance}"else:return"存款金额必须大于0"defwithdraw(self,amount):"""取款方法"""if0<amount<=self.balance:self.balance-=amount self.transactions.append(f"取款: -{amount}")returnf"取款成功!当前余额:{self.balance}"else:return"取款失败:余额不足或金额无效"defget_balance(self):"""获取余额"""returnself.balancedefget_transaction_history(self):"""获取交易历史"""returnself.transactions# 特殊方法:字符串表示def__str__(self):returnf"账户持有人:{self.account_holder}, 余额:{self.balance}"# 使用类account=BankAccount("王五",1000)print(account.deposit(500))# 存款成功!当前余额: 1500print(account.withdraw(200))# 取款成功!当前余额: 1300print(account)# 账户持有人: 王五, 余额: 1300

五、类的继承

  1. 继承允许一个类(子类)继承另一个类(父类)的属性和方法:
python# 父类(基类)classAnimal:def__init__(self,name,age):self.name=name self.age=agedefeat(self):returnf"{self.name}正在吃东西"defsleep(self):returnf"{self.name}正在睡觉"defmake_sound(self):return"动物发出声音"# 子类(派生类)继承父类classDog(Animal):def__init__(self,name,age,breed):# 调用父类的构造函数super().__init__(name,age)# 添加子类特有的属性self.breed=breed# 重写父类方法defmake_sound(self):returnf"{self.name}汪汪叫"# 添加子类特有的方法deffetch(self):returnf"{self.name}正在接飞盘"classCat(Animal):def__init__(self,name,age,color):super().__init__(name,age)self.color=colordefmake_sound(self):returnf"{self.name}喵喵叫"defclimb(self):returnf"{self.name}正在爬树"# 多继承示例classFlyable:deffly(self):return"飞行动物在空中飞翔"classSwimmable:defswim(self):return"水生动物在水中游泳"# 多重继承classDuck(Animal,Flyable,Swimmable):def__init__(self,name,age):Animal.__init__(self,name,age)defmake_sound(self):returnf"{self.name}嘎嘎叫"# 使用继承dog=Dog("旺财",3,"金毛")print(dog.eat())# 继承自Animal类print(dog.make_sound())# 重写后的方法print(dog.fetch())# Dog类特有的方法cat=Cat("咪咪",2,"白色")print(cat.sleep())# 继承自Animal类print(cat.climb())# Cat类特有的方法duck=Duck("唐纳德",1)print(duck.fly())# 继承自Flyable类print(duck.swim())# 继承自Swimmable类print(duck.make_sound())# 重写后的方法# 类型检查print(isinstance(dog,Animal))# Trueprint(isinstance(dog,Dog))# Trueprint(issubclass(Dog,Animal))# True
  1. 方法重写和super()函数
pythonclassVehicle:def__init__(self,brand,model):self.brand=brand self.model=modeldefstart(self):return"车辆启动"definfo(self):returnf"品牌:{self.brand}, 型号:{self.model}"classElectricCar(Vehicle):def__init__(self,brand,model,battery_capacity):# 使用super()调用父类方法super().__init__(brand,model)self.battery_capacity=battery_capacity# 扩展父类方法而不是完全重写definfo(self):# 先获取父类的info结果,再添加子类信息parent_info=super().info()returnf"{parent_info}, 电池容量:{self.battery_capacity}kWh"# 添加子类特有方法defcharge(self):return"电动车正在充电"# 使用tesla=ElectricCar("Tesla","Model 3",75)print(tesla.start())# 车辆启动(继承自Vehicle)print(tesla.info())# 品牌: Tesla, 型号: Model 3, 电池容量: 75 kWhprint(tesla.charge())# 电动车正在充电

相关新闻

  • 2024年SEVC SCI2区,双种群协同遗传算法+AGV柔性作业车间调度,深度解析+性能实测
  • 手机变电脑摄像头!DroidCamX全平台使用指南与实战教程 - 教程
  • 【如何实现有效社交】转载

最新新闻

  • 2026太和装修,刚需房业主如何做到不超预算、不降品质——一位万达二号院业主的真实经历 - 装企自媒体训练营辉哥
  • 大连登报怎么线上办理?2026最新办理流程大连登报怎么线上办理?2026最新办理流程 - 速递信息
  • 计算机专业出身的我,突然就不羡慕大厂程序员了
  • TI-RTOS Kernel(SYS/BIOS) HAL实战:从通用API到设备特定功能的进阶之路
  • Windows 10/11终极指南:通过WSABuilds解锁完整Android体验
  • 终极SPT-AKI存档编辑器指南:解放塔科夫单机体验的5个核心技巧

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号