文章目录一. 继承1. 子类的方法__init__()2. 子类特有的属性和方法3. 重写父类的方法4. 类关系之引入将实例用作属性二. 导入类1. 导入类2. 在一个模块中导入另一个模块3. 使用别名导入并创建实例三. Python标准库四. 类编码风格一. 继承一个类继承另一个类时将自动获得另一个类的所有属性和方法。子类继承了父类的所有属性和方法同时还可以定义自己的属性和方法。子类可以覆写父类的方法。1. 子类的方法__init__()创建子类时要调用父类的方法__init__()。这将初始化在父类__init__()方法中定义的所有属性从而让子类包含这些属性。使用super().__init__()来调用父类方法。如下classCar:一次模拟汽车的简单尝试。def__init__(self,make,model,year):self.makemake self.modelmodel self.yearyear self.odometer_reading0defget_descriptive_name(self):long_namef{self.year}{self.make}{self.model}returnlong_name.title()classElectricCar(Car):电动汽车的独特之处。def__init__(self,make,model,year):初始化父类的属性。super().__init__(make,model,year)if__name____main__:my_teslaElectricCar(tesla,model s,2019)print(my_tesla.get_descriptive_name())创建子类时父类必须包含在当前文件中且位于子类前面。子类名称后的括号指定父类名称来继承2. 子类特有的属性和方法如下新增电池属性classElectricCar(Car):def__init__(self,make,model,year):super().__init__(make,model,year)# 新增电池属性并设置其初始值75self.battery_size75defdescribe_battery(self):打印一条描述电瓶容量的消息。print(fThis car has a{self.battery_size}-kWh battery.)if__name____main__:my_teslaElectricCar(tesla,model s,2019)print(my_tesla.get_descriptive_name())my_tesla.describe_battery()3. 重写父类的方法对于父类的方法只要它不符合子类模拟的实物的行为都可以进行重写。为此可在子类中定义一个与要重写的父类方法同名的方法。假设Car类有一个名为fill_gas_tank()的方法它对全电动汽车来说毫无意义因此你可能想重写它。下面演示了一种重写方式deffill_gas_tank(self):电动汽车没有油箱。print(This car doesnt need a gas tank!)使用继承时可让子类保留从父类那里继承而来的精华并剔除不需要的糟粕。4. 类关系之引入将实例用作属性使用代码模拟实物时你可能会发现自己给类添加的细节越来越多属性和方法清单以及文件都越来越长。在这种情况下可能需要将类的一部分提取出来作为一个独立的类。可以将大型类拆分成多个协同工作的小类。# 将有关电池相关的属性提出来作为单独的类classBattery:一次模拟电动汽车电瓶的简单尝试。def__init__(self,battery_size75):初始化电瓶的属性。self.battery_sizebattery_sizedefdescribe_battery(self):打印一条描述电瓶容量的消息。print(fThis car has a{self.battery_size}-kWh battery.)classElectricCar(Car):def__init__(self,make,model,year):super().__init__(make,model,year)self.battery_size75self.batteryBattery()defdescribe_battery(self):打印一条描述电瓶容量的消息。print(fThis car has a{self.battery_size}-kWh battery.)deffill_gas_tank(self):电动汽车没有油箱。print(This car doesnt need a gas tank!)if__name____main__:my_teslaElectricCar(tesla,model s,2019)print(my_tesla.get_descriptive_name())my_tesla.battery.describe_battery()给Battery新增了方法get_range()做了一些简单的分析。classBattery:...defget_range(self):打印一条消息指出电瓶的续航里程。ifself.battery_size75:range260elifself.battery_size100:range315print(fThis car can go about{range}miles on a full charge.)if__name____main__:my_teslaElectricCar(tesla,model s,2019)my_tesla.battery.get_range()二. 导入类为遵循Python的总体理念应让文件尽可能整洁。Python在这方面提供了帮助允许将类存储在模块中然后在主程序中导入所需的模块。1. 导入类设有一个car.py的类文件存放了多个类一组用于表示燃油汽车和电动汽车的类。classCar:--snip--classBattery:一次模拟电动汽车电瓶的简单尝试。def__init__(self,battery_size75):初始化电瓶的属性。self.battery_sizebattery_sizedefdescribe_battery(self):打印一条描述电瓶容量的消息。print(fThis car has a{self.battery_size}-kWh battery.)defget_range(self):打印一条描述电瓶续航里程的消息。ifself.battery_size75:range260elifself.battery_size100:range315print(fThis car can go about{range}miles on a full charge.)classElectricCar(Car):模拟电动汽车的独特之处。def__init__(self,make,model,year): 初始化父类的属性。 再初始化电动汽车特有的属性。 super().__init__(make,model,year)self.batteryBattery()下面来创建另一个文件my_car.py在其中导入Car类并创建其实例导入多个类fromcarimportCar,ElectricCarif__name____main__:my_beetleCar(volkswagen,beetle,2019)print(my_beetle.get_descriptive_name())my_teslaElectricCar(tesla,roadster,2019)print(my_tesla.get_descriptive_name())导入整个模块再使用句点表示法访问需要的类。importcarif__name____main__:my_beetlecar.Car(volkswagen,beetle,2019)print(my_beetle.get_descriptive_name())my_teslacar.ElectricCar(tesla,roadster,2019)print(my_tesla.get_descriptive_name())使用语法module_name.ClassName访问需要的类。导入模块中的所有类(不推荐)frommodule_nameimport*不推荐使用这种导入方式原因有二。如果只看文件开头的import语句就能清楚地知道程序使用了哪些类将大有裨益。然而这种导入方式没有明确地指出使用了模块中的哪些类。这种方式还可能引发名称方面的迷惑。如果不小心导入了一个与程序文件中其他东西同名的类将引发难以诊断的错误。2. 在一个模块中导入另一个模块有时候需要将类分散到多个模块中以免模块太大或在同一个模块中存储不相关的类。将类存储在多个模块中时你可能会发现一个模块中的类依赖于另一个模块中的类。car类、Battery和ElectricCar放到不同的模块中car.pyclassCar:。。。elec_car.pyfromcarimportCarclassBattery:一次模拟电动汽车电瓶的简单尝试。。。。classElectricCar(Car):。。这里只引入ElectricCar即可因为elec_car模块中已经导入了Car。这叫做依赖传递。fromelec_carimportElectricCarif__name____main__:my_teslaElectricCar(tesla,model s,2019)print(my_tesla.get_descriptive_name())但和java不同的是在同一目录下的类java不需要导入可以直接引用py始终需要导入你所需要的类3. 使用别名导入并创建实例导入类时也可为其指定别名。例如要在程序中创建大量电动汽车实例需要反复输入ElectricCar非常烦琐。为避免这种烦恼可在import语句中给ElectricCar指定一个别名fromelectric_carimportElectricCarasEC# 现在就可以使用别名创建实例了my_teslaEC(tesla,roadster,2019)三. Python标准库Python标准库是一组模块我们安装的Python都包含它。你可以使用标准库中的任何函数和类只需在程序开头包含一条简单的import语句即可。如下random模块fromrandomimportrandintif__name____main__:#一到六随机返回一个数print(randint(1,6))# 将一个列表或元组作为参数并随机返回其中的一个元素fromrandomimportrandint,choiceif__name____main__:players[charles,martina,michael,florence,eli]print(choice(players))注意: 还可以从其他地方下载外部模块类似与java的依赖四. 类编码风格类名应采用驼峰命名法即将类名中的每个单词的首字母都大写而不使用下划线。实例名和模块名都采用小写格式并在单词之间加下划线。对于每个类都应紧跟在类定义后面包含一个文档字符串。每个模块也都应包含一个文档字符串对其中的类可用于做什么进行描述。可使用空行来组织代码但不要滥用。在类中可使用一个空行来分隔方法在模块中可使用两个空行来分隔类。需要同时导入标准库中的模块和你编写的模块时先编写导入标准库模块的import语句再添加一个空行然后编写导入你自己编写的模块的import语句。
企业数字化 ERP 产品动态
相关推荐
【人工智能基础一】深度学习基础 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:13:55
【概率论与数理统计】第一章:概率论基本概念 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:13:55
【人工智能概述(二)】人工智能的关键技术 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:13:55
【44】苹果数据集(有v5/v8模型)/YOLO苹果检测 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:50:51
【43】遥感飞机数据集(有v5/v8模型)/YOLO遥感飞机检测 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:50:51
英语词性简介 英语词性主要可以分为两大类:实词 和 虚词。一、实词 - 有实际意义,可在句中独立充当成分名词缩写: n. (或 noun)中文: 名词功能: 表示人、事物、地点、抽象概念的名称。例句: The cat (猫) sat on the mat… · 2026/11/3 9:50:51
RLPR-Qwen2.5:无验证器也能高效推理? RLPR-Qwen2.5:无验证器也能高效推理?
导语:OpenBMB推出的RLPR-Qwen2.5-7B-Base模型,通过创新的强化学习框架,在无需外部验证器的情况下显著提升了大语言模型的推理能力,为通用领域推理任务开辟了新路径。
行… · 2026/11/3 9:50:51
Ming-flash-omni:100B稀疏MoE多模态新方案 Ming-flash-omni:100B稀疏MoE多模态新方案
导语:Inclusion AI推出1000亿参数稀疏混合专家(MoE)架构多模态模型Ming-flash-omni Preview,以仅60亿活跃参数实现高效计算,在语音识别、图像生成与编辑等领域实现… · 2026/11/3 9:50:51
【学术英语】完型填空练习题 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:49:49
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46