news 2026/5/1 14:04:08

8.3 类的详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
8.3 类的详解

文章目录

  • 前言
  • 一、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())# 电动车正在充电

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 16:18:37

Vue 路由的庖丁解牛

Vue 路由&#xff08;Vue Router&#xff09; 是 Vue.js 应用的前端导航中枢&#xff0c;它将 URL 与组件动态映射&#xff0c;实现无刷新的单页应用&#xff08;SPA&#xff09;。 其核心不仅是“跳转页面”&#xff0c;更是状态管理、权限控制、性能优化、SEO 友好的集成平台…

作者头像 李华
网站建设 2026/5/1 8:37:56

PotPlayer采集卡选麦克风会导致黑屏及音频修复方案

文章目录PotPlayer采集卡选麦克风会导致黑屏及音频修复方案1. 核心故障分析&#xff1a;为何选择“麦克风”会导致黑屏&#xff1f;1.1 视频与音频通道的独立性原理1.2 错误操作流程与系统反馈1.3 修正策略&#xff1a;分离视频与音频设置2. 进阶故障排除&#xff1a;有画面但无…

作者头像 李华
网站建设 2026/4/27 23:31:26

8款AI论文写作工具横向对比:智能降重与高效创作测评

当前市场上AI论文辅助工具功能多样&#xff0c;实测数据显示&#xff0c;高效降重与降低AIGC检测率的核心需求可通过Grammarly、QuillBot等文本优化工具实现&#xff0c;而Paperpal、Writefull则擅长学术语言润色&#xff1b;Scite.ai凭借文献溯源功能脱颖而出&#xff0c;Hemi…

作者头像 李华
网站建设 2026/4/21 0:32:58

8款AI论文写作工具性能对比:智能降重与高效创作评测

当前市场上AI论文辅助工具功能多样&#xff0c;实测数据显示&#xff0c;高效降重与降低AIGC检测率的核心需求可通过Grammarly、QuillBot等文本优化工具实现&#xff0c;而Paperpal、Writefull则擅长学术语言润色&#xff1b;Scite.ai凭借文献溯源功能脱颖而出&#xff0c;Hemi…

作者头像 李华
网站建设 2026/4/11 16:21:17

互联网大厂Java小白求职面试实录:从Spring到微服务的全面挑战

场景&#xff1a;互联网大厂Java小白求职者面试 人物介绍&#xff1a; 面试官&#xff1a;严肃且经验丰富的技术大牛求职者&#xff1a;超好吃&#xff0c;一个刚刚入门Java的程序员 面试场景&#xff1a; 第一轮&#xff1a;Spring基础 面试官&#xff1a;超好吃&#xff0c;你…

作者头像 李华