news 2026/1/20 9:01:49

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/1/17 3:14:07

人工智能辅助识别价值陷阱

人工智能辅助识别价值陷阱 关键词:人工智能、价值陷阱、识别算法、机器学习、数据分析 摘要:本文围绕人工智能辅助识别价值陷阱展开深入探讨。首先介绍了研究的背景、目的、预期读者等内容,接着阐述了相关核心概念及联系,详细讲解了用于识别价值陷阱的核心算法原理与具体操…

作者头像 李华
网站建设 2026/1/1 20:03:16

AI智能体在识别经济护城河中的作用

AI智能体在识别经济护城河中的作用 关键词:AI智能体、经济护城河、识别作用、数据分析、机器学习 摘要:本文深入探讨了AI智能体在识别经济护城河方面的作用。首先介绍了研究的背景,包括目的、预期读者、文档结构和相关术语。接着阐述了AI智能体和经济护城河的核心概念及其联…

作者头像 李华
网站建设 2026/1/12 23:28:07

Hadoop vs 数据仓库:大数据存储方案深度对比

Hadoop vs 数据仓库&#xff1a;大数据存储方案深度对比关键词&#xff1a;Hadoop、数据仓库、大数据存储、分布式计算、湖仓一体、结构化数据、非结构化数据摘要&#xff1a;在大数据时代&#xff0c;选择合适的存储方案是企业数据战略的关键。本文将Hadoop与传统数据仓库放在…

作者头像 李华
网站建设 2026/1/1 19:54:08

8款AI论文辅助软件功能测评:智能降重与高效写作能力评估

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

作者头像 李华
网站建设 2026/1/17 10:39:06

统信UOS操作系统无“网络”选项下连接wifi

如图&#xff0c;是我电脑的设置界面&#xff0c;其中没有“网络”选项&#xff0c;该如何连接wifi呢&#xff1f;方法是通过命令行的方式&#xff1a;1. 查看当前网络链接状态 nmcli connection show --active2. 查看可链接的无线网络 nmcli device wifi list3. 打开无线功能&…

作者头像 李华