当前位置: 首页 > article >正文

Python面向对象编程(OOP)详解:类、对象、继承、多态、封装

面向对象编程Object-Oriented Programming简称OOP是一种主流的编程范式核心思想是“以对象为中心”将数据属性和操作数据的方法行为封装在一起通过类与对象的关系实现代码的复用、扩展和维护。Python作为一门面向对象的语言完全支持OOP的五大核心特性——类、对象、封装、继承、多态且语法简洁、灵活无需复杂的语法约束就能实现面向对象开发。本文将从基础概念入手逐步深入拆解每个知识点结合Python实操代码示例讲解其原理、用法、注意事项和实际应用场景让你彻底掌握OOP的核心逻辑从“面向过程编程”平稳过渡到“面向对象编程”。一、OOP核心基础类与对象类和对象是OOP的基石二者是“模板与实例”的关系——类是抽象的模板定义了对象的属性和方法对象是类的具体实例拥有类定义的所有属性和方法同时可以有自己的个性化特征。1. 类Class对象的“模板”类是对一类事物的共同特征和行为的抽象描述比如“人类”就是一个类共同特征属性有姓名、年龄、性别共同行为方法有吃饭、睡觉、工作再比如“汽车”类属性有品牌、颜色、价格行为有启动、加速、刹车。在Python中用class关键字定义类语法格式如下# 基本类定义格式 class 类名(父类名, ...): # 父类可选默认继承objectPython所有类的基类 # 类属性所有对象共享的属性属于类本身而非单个对象 类属性名 属性值 # 构造方法初始化对象创建对象时自动调用 def __init__(self, 参数1, 参数2, ...): # 实例属性每个对象独有的属性用self绑定到当前对象 self.实例属性名1 参数1 self.实例属性名2 参数2 # 实例方法对象的行为第一个参数必须是self代表当前对象 def 实例方法名(self, 参数...): 方法体 # 类方法操作类属性用classmethod装饰第一个参数是cls代表当前类 classmethod def 类方法名(cls, 参数...): 方法体 # 静态方法与类和对象无关用staticmethod装饰无默认参数 staticmethod def 静态方法名(参数...): 方法体关键细节解析类名规范遵循PEP 8规范采用“大驼峰命名法”如Person、Car首字母大写多个单词首字母依次大写避免用小写或下划线。self的作用self是实例方法的第一个必填参数代表“当前对象”用于绑定实例属性和调用实例方法。当创建对象后调用方法时Python会自动将当前对象传入self无需手动传递。类属性 vs 实例属性类属性定义在类内部、__init__方法外部所有对象共享修改类属性会影响所有对象实例属性定义在__init__方法内部用self绑定每个对象独有修改一个对象的实例属性不会影响其他对象。三种方法的区别实例方法操作实例属性依赖对象必须通过对象调用类方法操作类属性依赖类可通过类或对象调用静态方法不依赖类和对象仅作为类的“工具方法”可通过类或对象调用与类的关联度最低。代码示例定义一个“Person”类class Person: # 类属性所有人类共享的特征 species 人类 # 所有Person对象的species都是人类 # 构造方法初始化对象的实例属性 def __init__(self, name, age, gender): # 实例属性每个对象独有的特征 self.name name # 姓名 self.age age # 年龄 self.gender gender # 性别 # 实例方法对象的行为吃饭 def eat(self, food): print(f{self.name}正在吃{food}) # 实例方法对象的行为工作 def work(self): print(f{self.name}今年{self.age}岁正在努力工作) # 类方法操作类属性修改人类的物种名称实际无意义仅作示例 classmethod def change_species(cls, new_species): cls.species new_species print(f人类的物种名称已修改为{cls.species}) # 静态方法工具方法判断年龄是否成年与类/对象无关 staticmethod def is_adult(age): return age 18 # 打印类属性通过类调用 print(初始物种, Person.species) # 输出初始物种人类2. 对象Object类的“具体实例”对象是类的实例化结果是具体的、可操作的实体。比如“Person”类是抽象的而“张三25岁男”“李四30岁女”就是Person类的具体对象每个对象都有自己的name、age、gender属性也能调用eat、work等方法。在Python中创建对象实例化的语法非常简单对象名 类名(参数1, 参数2, ...)参数对应类的__init__方法中的参数self除外。代码示例实例化Person类创建对象并使用# 实例化对象创建两个Person对象 person1 Person(张三, 25, 男) person2 Person(李四, 30, 女) # 访问实例属性对象.属性名 print(person1.name) # 输出张三 print(person2.age) # 输出30 # 调用实例方法对象.方法名(参数) person1.eat(米饭) # 输出张三正在吃米饭 person2.work() # 输出李四今年30岁正在努力工作 # 访问类属性对象也能访问类属性但不推荐建议通过类访问 print(person1.species) # 输出人类 print(Person.species) # 输出人类 # 调用类方法通过类调用或通过对象调用 Person.change_species(智人) # 输出人类的物种名称已修改为智人 print(person2.species) # 输出智人所有对象的类属性都被修改 # 调用静态方法通过类调用或通过对象调用 print(Person.is_adult(25)) # 输出True print(person1.is_adult(17)) # 输出False # 修改实例属性仅影响当前对象 person1.age 26 print(person1.age) # 输出26 print(person2.age) # 输出30不受影响关键注意点每个对象的实例属性是独立的修改一个对象的实例属性不会影响其他对象类属性是共享的通过类修改类属性所有对象的类属性都会被修改但通过对象修改类属性如person1.species 猿人本质是给该对象新增了一个同名的实例属性不会影响类属性和其他对象构造方法__init__是“初始化方法”不是“创建对象的方法”Python在创建对象时会先分配内存再自动调用__init__初始化属性。二、OOP核心特性一封装Encapsulation封装是OOP的核心特性之一核心思想是“隐藏对象的内部细节只对外提供可访问的接口”目的是保护数据的安全性避免外部随意修改对象的内部属性同时降低代码的耦合度。简单来说封装就是“把该隐藏的隐藏该暴露的暴露”——对象的属性尤其是核心属性不应该被外部直接修改而是通过类提供的方法getter/setter来访问和修改这样可以在方法中添加校验逻辑确保数据的合法性。1. 封装的实现方式Python特色Python中没有像Java、C那样的“访问修饰符”public、private、protected而是通过“命名规范”来实现封装公有属性/方法默认所有属性和方法都是公有public可以被外部直接访问和调用如前面的name、eat方法私有属性/方法在属性名或方法名前加两个下划线__这样的属性/方法会被Python“改名”名称修饰外部无法直接访问只能在类内部访问受保护属性/方法在属性名或方法名前加一个下划线_这是一种“约定俗成”的规范代表该属性/方法是“受保护的”外部不应该直接访问但Python不会强制限制本质还是公有。关键细节名称修饰当给属性/方法命名为__属性名时Python会自动将其改名为_类名__属性名目的是防止外部直接访问。但这种修饰不是“绝对安全”的外部依然可以通过对象._类名__属性名访问但这违反了封装的设计思想不推荐使用。代码示例封装的实现getter/setter方法class Student: def __init__(self, name, age, score): self.name name # 公有属性可直接访问 self._age age # 受保护属性约定不直接访问 self.__score score # 私有属性无法直接访问 # 私有方法只能在类内部调用 def __check_score(self, score): # 校验分数的合法性0~100 return 0 score 100 # getter方法获取私有属性__score def get_score(self): return self.__score # setter方法修改私有属性__score添加校验逻辑 def set_score(self, new_score): if self.__check_score(new_score): self.__score new_score print(f分数修改成功新分数{self.__score}) else: print(分数不合法需在0~100之间) # 公有方法展示学生信息 def show_info(self): print(f姓名{self.name}年龄{self._age}分数{self.__score}) # 实例化对象 stu Student(王五, 18, 90) # 访问公有属性 print(stu.name) # 输出王五 # 访问受保护属性不推荐但可以访问 print(stu._age) # 输出18 # 访问私有属性直接访问会报错 # print(stu.__score) # 报错AttributeError: Student object has no attribute __score # 通过getter方法访问私有属性 print(stu.get_score()) # 输出90 # 通过setter方法修改私有属性合法修改 stu.set_score(85) # 输出分数修改成功新分数85 # 通过setter方法修改私有属性非法修改 stu.set_score(105) # 输出分数不合法需在0~100之间 # 调用私有方法直接调用会报错 # stu.__check_score(90) # 报错AttributeError: Student object has no attribute __check_score # 调用公有方法内部可以访问私有属性和私有方法 stu.show_info() # 输出姓名王五年龄18分数852. 封装的优势数据安全通过私有属性和setter方法限制外部对数据的修改确保数据符合业务规范如分数必须在0~100之间降低耦合外部只需通过接口getter/setter方法操作对象无需关心对象内部的实现细节当内部实现修改时外部代码无需改动代码可维护性高所有数据的操作都集中在类内部便于统一管理和修改。3. 封装的实际应用场景封装在实际开发中应用广泛比如用户类User密码password作为私有属性通过setter方法加密存储getter方法不直接返回明文密码商品类Goods价格price作为私有属性通过setter方法限制价格不能为负数数据库连接类DBConnection连接地址、用户名、密码作为私有属性对外提供连接、关闭等接口隐藏连接细节。三、OOP核心特性二继承Inheritance继承是实现代码复用的核心机制核心思想是“子类继承父类的属性和方法同时可以拥有自己的个性化属性和方法”。简单来说就是“子承父业”——父类定义通用的属性和方法子类继承后无需重复编写只需专注于自己的特殊逻辑。在Python中继承分为“单继承”和“多继承”单继承子类只继承一个父类推荐结构清晰避免冲突多继承子类继承多个父类语法支持但容易出现“菱形继承”问题需谨慎使用。1. 继承的基本语法# 父类基类 class 父类名: 父类属性和方法 # 子类派生类继承父类 class 子类名(父类名1, 父类名2, ...): # 多继承时父类用逗号分隔 # 子类可以新增自己的属性和方法 子类属性和方法 # 子类可以重写父类的方法覆盖父类的逻辑 def 父类方法名(self, 参数...): 子类的方法体关键概念父类基类被继承的类提供通用的属性和方法如Person类子类派生类继承父类的类拥有父类的所有属性和方法同时可以新增或重写方法如Student类、Teacher类都继承自Person类方法重写Override子类定义与父类同名的方法覆盖父类的方法逻辑实现子类的个性化需求super()函数子类中调用父类的属性或方法避免硬编码父类名提高代码的可维护性。代码示例1单继承Student类继承Person类# 父类Person通用属性和方法 class Person: def __init__(self, name, age, gender): self.name name self.age age self.gender gender def eat(self, food): print(f{self.name}正在吃{food}) def work(self): print(f{self.name}正在工作) # 子类Student继承Person类 class Student(Person): # 新增子类的类属性 role 学生 # 重写父类的__init__方法新增自己的属性 def __init__(self, name, age, gender, student_id, score): # 调用父类的__init__方法继承父类的属性 super().__init__(name, age, gender) # 新增子类的实例属性 self.student_id student_id # 学号 self.score score # 分数 # 重写父类的work方法学生的“工作”是学习替代父类的“工作”逻辑 def work(self): print(f{self.name}学号{self.student_id}正在学习分数{self.score}) # 新增子类的方法父类没有的方法 def exam(self): print(f{self.name}正在参加考试祝他取得好成绩) # 实例化子类对象 stu Student(赵六, 17, 男, 2026001, 88) # 访问父类的属性 print(stu.name) # 输出赵六 print(stu.age) # 输出17 # 访问子类的属性 print(stu.student_id) # 输出2026001 print(stu.role) # 输出学生 # 调用父类的方法未被重写的方法 stu.eat(面包) # 输出赵六正在吃面包 # 调用重写后的方法子类的work方法替代父类的work方法 stu.work() # 输出赵六学号2026001正在学习分数88 # 调用子类新增的方法 stu.exam() # 输出赵六正在参加考试祝他取得好成绩代码示例2多继承注意菱形继承问题多继承即子类继承多个父类语法上只需将多个父类用逗号分隔但当多个父类有同名方法时会按照“MRO方法解析顺序”查找方法——Python中MRO遵循“C3线性化”规则简单来说就是“从左到右深度优先不重复”。# 父类1 class A: def show(self): print(我是A类的show方法) # 父类2 class B: def show(self): print(我是B类的show方法) # 子类继承A和B多继承 class C(A, B): # 先继承A再继承B pass # 实例化子类对象 c C() # 调用show方法按照MRO顺序先找A类的show方法 c.show() # 输出我是A类的show方法 # 查看MRO顺序通过__mro__属性 print(C.__mro__) # 输出(class __main__.C, class __main__.A, class __main__.B, class object)注意多继承容易导致代码逻辑混乱尤其是当多个父类有同名属性或方法时难以维护因此实际开发中尽量避免多继承若需实现多继承的功能可通过“接口继承”或“组合”替代。2. 继承的优势代码复用父类的属性和方法无需在子类中重复编写减少代码冗余扩展性强子类可以通过新增属性/方法、重写父类方法实现个性化需求不影响父类的逻辑结构清晰通过继承建立类与类之间的关系形成层次化的结构如“动物→哺乳动物→人类→学生”便于代码管理和理解。3. 继承的实际应用场景框架开发如Django的View类所有自定义视图都继承自View类重写get、post等方法实现不同的接口逻辑业务逻辑复用如电商系统中“商品”类是父类“电子产品”“服装”“食品”是子类子类继承父类的“名称、价格、库存”等属性新增自己的特殊属性如电子产品的“保修期”工具类封装如自定义一个“基础工具类”包含通用的工具方法如时间格式化、字符串处理其他业务类继承该类直接使用工具方法。四、OOP核心特性三多态Polymorphism多态是OOP的三大核心特性之一核心思想是“同一方法不同实现”——当不同的对象调用同一个方法时会根据对象的类型执行不同的逻辑实现“一个接口多种实现”。多态的实现依赖两个前提存在继承关系子类继承父类子类重写父类的方法不同子类对同一方法有不同的实现。简单来说多态就是“父类引用指向子类对象”调用方法时实际执行的是子类的实现而非父类的实现。Python中多态是“动态的”无需像Java那样强制转换类型天生支持多态。1. 多态的基本实现代码示例多态的实际应用不同子类调用同一方法执行不同逻辑# 父类Animal通用方法 class Animal: def __init__(self, name): self.name name # 父类的通用方法make_sound发出声音 def make_sound(self): print(f{self.name}发出了声音) # 子类1Dog继承Animal重写make_sound方法 class Dog(Animal): def make_sound(self): print(f{self.name}汪汪叫) # 子类2Cat继承Animal重写make_sound方法 class Cat(Animal): def make_sound(self): print(f{self.name}喵喵叫) # 子类3Bird继承Animal重写make_sound方法 class Bird(Animal): def make_sound(self): print(f{self.name}叽叽喳喳叫) # 定义一个通用函数接收Animal类型的对象调用make_sound方法 def animal_sound(animal): # 无论传入的是Dog、Cat还是Bird都调用make_sound方法 animal.make_sound() # 实例化不同的子类对象 dog Dog(大黄) cat Cat(小白) bird Bird(小麻雀) # 调用通用函数传入不同的对象 animal_sound(dog) # 输出大黄汪汪叫 animal_sound(cat) # 输出小白喵喵叫 animal_sound(bird) # 输出小麻雀叽叽喳喳叫关键解析函数animal_sound接收一个animal参数无需关心该参数是Dog、Cat还是Bird只要它是Animal类的子类或实例就能调用make_sound方法当传入不同的对象时make_sound方法的执行逻辑不同这就是多态——同一接口make_sound多种实现Python的多态是“动态绑定”的在运行时才确定调用哪个子类的方法无需提前声明类型。2. 多态的优势代码灵活性高通用函数/方法可以适配不同的子类对象无需为每个子类单独编写代码可扩展性强新增子类时无需修改原有代码如新增一个Pig类重写make_sound方法直接传入animal_sound函数即可符合“开闭原则”对扩展开放对修改关闭代码可读性高通过统一的接口调用不同的实现逻辑清晰便于维护。3. 多态的实际应用场景接口开发如Web框架中的视图函数接收不同的请求对象GET、POST调用同一个处理方法执行不同的逻辑数据处理如一个数据解析函数接收不同类型的数据JSON、CSV、Excel调用同一个解析方法根据数据类型执行不同的解析逻辑插件化开发如编辑器的插件所有插件都继承自同一个插件基类重写统一的接口编辑器无需关心插件的具体实现只需调用接口即可。五、五大核心知识点总结与关联类、对象、封装、继承、多态不是孤立的而是相互关联、相辅相成的共同构成了OOP的核心体系我们用一张表格和一句话总结它们的关系和作用1. 核心知识点总结表知识点核心作用关键细节类定义对象的模板封装属性和方法用class定义包含类属性、实例属性、三种方法对象类的具体实例执行实际的逻辑通过类实例化创建拥有类的所有属性和方法封装隐藏内部细节保护数据安全提供接口通过私有属性__和getter/setter方法实现继承复用父类代码扩展子类功能支持单继承/多继承子类可重写父类方法用super()调用父类多态同一接口多种实现提升代码灵活性依赖继承和方法重写动态绑定方法2. 知识点关联用一句话概括通过类定义对象的模板封装对象的属性和方法通过继承实现代码复用子类继承父类并扩展功能通过多态实现接口统一不同子类对同一方法有不同实现最终通过对象执行具体的业务逻辑。六、OOP实际开发注意事项避免过度封装不是所有属性都要设为私有简单的属性可以直接暴露过度封装会增加代码复杂度谨慎使用多继承多继承容易导致MRO混乱和代码冲突优先使用单继承必要时用组合替代遵循“里氏替换原则”子类应该能替代父类且不影响程序的正确性子类不能破坏父类的原有逻辑合理使用继承和组合“继承”是“is-a”关系如Student is a Person“组合”是“has-a”关系如Car has a Engine避免滥用继承类和方法的职责要单一一个类只负责一个核心功能一个方法只做一件事便于维护和扩展。七、总结面向对象编程的核心是“以对象为中心”通过类与对象的封装、继承、多态实现代码的复用、扩展和维护。Python的OOP语法简洁灵活无需复杂的约束就能轻松实现五大核心特性类是模板对象是实例二者是“抽象与具体”的关系封装是“隐藏细节暴露接口”保护数据安全继承是“子承父业”复用代码扩展功能多态是“同一接口多种实现”提升代码灵活性。掌握OOP的核心知识点不仅能提升你的Python编程能力更能帮助你建立“面向对象”的思维方式——在实际开发中学会将复杂的业务逻辑拆解为一个个对象通过类与对象的关系组织代码让代码更具可读性、可维护性和可扩展性。无论是小型项目还是大型工程OOP都是不可或缺的编程思想也是你从“初级开发者”迈向“中级开发者”的关键一步。

相关文章:

Python面向对象编程(OOP)详解:类、对象、继承、多态、封装

面向对象编程(Object-Oriented Programming,简称OOP)是一种主流的编程范式,核心思想是“以对象为中心”,将数据(属性)和操作数据的方法(行为)封装在一起,通过…...

灵机一物AI智能电商小程序(已上线)-从“帮我买抽纸”到自动下单支付——大模型驱动全链路自动购物系统实战

作者:vx:Maris5188摘要:传统电商购物需要用户手动搜索、对比、选规格、下单、支付,操作路径长、决策成本高。本文基于大模型LangGraph状态机Chainlit任务编排,实现一套从自然语言指令到支付完成的端到端自动购物系统。用户只需一句…...

CoMAM:让多智能体记忆系统学会“团队协作“的强化学习框架

图解CoMAM:让多智能体记忆系统学会"团队协作"的强化学习框架 开篇导读 你有没有想过,为什么和AI对话久了,它还是记不住你的偏好?上下文窗口限制是根本原因——LLM只能看到有限的历史对话。为了解决这个问题,…...

2026最新版 Android Studio 安装与配置全教程(保姆级)

哈喽各位小伙伴~ 想要入门Android开发,第一步就是把开发环境搭好。今天这篇博客,我会带你从零开始安装Android Studio,覆盖下载、安装、SDK配置、模拟器、环境变量、新建项目全流程,新手也能一次成功,少走弯…...

jdbc通信原理

一、普通查询(默认行为) 正确流程 JDBC客户端通过Socket与MySQL服务器建立TCP连接。客户端发送SQL查询语句。MySQL服务器执行查询,将结果集数据从存储引擎读出,放入服务器内核的发送缓冲区(位于操作系统内核空间&#…...

从零构建RAG系统:小白程序员必备的全局观与收藏指南

本文旨在帮助读者建立RAG系统的全局观,从离线解析、Query理解、在线召回到上下文生成,详细阐述了四大模块及其间的六个关键联动点,如Chunk大小与LLM窗口的配合、Query解析结果对检索策略的指导等。文章强调模块间的相互影响,并通过…...

量化开发实战手册·第2篇:数据源选型五大维度——像评估股票一样科学评估你的行情接口

这是《量化开发实战手册》系列的第二篇文章。在第一篇里,我帮你梳理了主流数据源的优缺点和适用场景。但很多读者问:到底怎么科学地评估一个行情接口?看官网介绍都挺好,一用就踩坑。今天,我从产品体验官的视角&#xf…...

Python 免费开源库精选:那些“不要钱”却“值千金”的神器

⚠️ 再次长文预警!前方是“免费开源”的宝藏海洋!⚠️📢 写在前面(老规矩): 嘿,朋友!既然你看到了这里,说明你对 Python 的**“免费午餐”很感兴趣!&#x1…...

从零开始复现 ThinkPHP RCE:Docker + Burp Suite 实战

目录 1. 漏洞概述 2. 环境搭建 2.1 安装 Docker 与 Docker Compose 2.2 部署 Vulhub 靶场 2.3 启动环境 3. 漏洞验证 3.1 浏览器直接验证 3.2 Burp Suite 抓包改包验证 4. 深入利用——获取 Webshell 4.1 写入一句话木马 4.2 使用蚁剑连接 5. 漏洞原理简析 6. 修复…...

RK3568之pinctrl子系统和GPIO子系统

第1章 两个子系统的区别与联系1.1 pinctrl子系统主要功能:引脚复用(pin multiplexing)和引脚配置(pin configuration)。引脚复用:一个物理引脚可能有多个功能,例如可以是GPIO、串口TX、I2C SCL等…...

2026京东校招全攻略:笔试面试、高频题、看这一篇就够了

2026京东校招全攻略:笔试面试、高频题、看这一篇就够了 数据来源:真实面经整理 京东校招公开信息交叉校验 | 更新时间:2026年3月 校招大礼包获取 获取方法 京东后端面试里,一个很有代表性的问题是: Redis 分布式锁&a…...

IDM抓取网页动态资源:从嗅探原理到实战捕获全攻略

# IDM抓取网页动态资源:从嗅探原理到实战捕获全攻略## 引言在当今Web 2.0时代,绝大多数网站采用AJAX、动态加载、流媒体等技术呈现内容。传统的“右键另存为”已无法捕获这些**动态资源**——视频被切分为ts片段、图片通过XHR接口加载、数据以JSON格式传…...

网工必看!一文搞定华为高可用组网实战:VRRP + BFD + NQA 联动深度解析

摘要:本文以一个企业园区网综合实验为核心,完整呈现从拓扑规划到逐条命令配置的全过程。实验涵盖 VRRP 双网关冗余、BFD 快速故障检测、NQA 链路质量探测、静态路由与浮动路由等多项企业级高可用技术。文章详细讲解每一条命令的含义与作用,适合备考 HCIA/HCIP 的同学、网络运…...

ESP32硬件检测程序

ESP32硬件检测程序 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文…...

走出文安婚介所的计算与失落:在那次免费的重逢里,我读懂了平凡生活的底层逻辑

我叫陆远,是一名长期伏案、与各种底层代码和复杂算法打交道的软件开发工程师。三十岁之前,我的生活一直是以一种近乎线性的逻辑在运行:在上海的一家互联网大厂卷了六年,攒下了一些存款,也透支了大部分的睡眠。两年前&a…...

把AI装进微信?OpenClaw实现多平台AI助手实战

把AI装进微信?OpenClaw实现多平台AI助手实战 前言 你是否曾想过:在微信上直接和AI对话,让它帮你写代码、解答问题、甚至管理日程?之前这种需求只能通过各种不稳定的第三方机器人实现,直到我发现了OpenClaw——一个开…...

SolidWorks 拉伸凸台 - 命令属性 - 薄壁特征

示例 6-8-2、拉伸切除 - 薄壁特征开放草图新建一个文件;前视基准面;画一个开放的草图;给这个轮廓,使用 拉伸凸台命令,它也会拉伸;默认会开启薄壁特征;单向,10mm,意思是将…...

基于五类数据集的Faster RCNN目标检测算法在缺陷检测中的应用:共计1800张VOC格式...

基于FasterRCNN目标检测的缺陷检测算法 数据集包含五类别(具体如图所示) 共计1800张图 包含VOC格式数据集Faster RCNN模型最近在搞工业质检项目,发现Faster R-CNN在缺陷检测上还挺能打。手头有个五类缺陷的数据集(划痕、气泡、氧化…...

2026年沈阳路灯厂TOP10榜单揭晓,哪家实力最强?

大家好,今天给大家带来一个热门话题:2026年沈阳路灯厂TOP10榜单揭晓!哪家实力最强?让我们一起来看看吧!榜单揭晓1. 沈阳晟光户外照明设施销售有限公司(简称:晟光路灯)2. 飞利浦照明3…...

人工智能代理AI Agent如何自动化CRM、Jira、计费和Slack之间的工作流程

当单一业务流程跨越多个系统时 在泰山老父公司中,工作流程早已超越单一系统。销售在CRM中进行,开发在Jira中,财务在计费系统中,日常沟通则在Slack中完成。这些平台各有其用途,且在独立时运行得相当有效。 当单个业务…...

【前端】最好用的本地组件库调试工具 yalc

在开发和编写多个软件包(私有或公共)时,您经常需要在本地环境中的其他项目中使用最新/正在开发的版本,而无需将这些软件包发布到远程注册表。NPM和 Yarn 通过类似的符号链接包方法来解决这个问题。虽然这种方法在很多情况下都有效…...

目标函数(含罚函数处理)

蜣螂优化(DBO)算法 工程实际,求目标函数最小值,图中所求例子为一个压力容器设计成本最小,为4变量,4个不等式约束。 采用罚函数将4约束问题转变为无约束问题。 代码注释完整,非常容易带入自己想要求的问题。深夜撸代码发…...

【OpenCV 图像变换实战:旋转、模板匹配与金字塔操作】

在计算机视觉领域,图像变换是最基础也最核心的操作之一。无论是简单的图像旋转、精准的模板匹配,还是用于图像分层处理的金字塔操作,都是实现图像增强、目标检测、图像重建的关键技术。本文将结合实战代码,系统讲解 OpenCV 中这三…...

C语言介绍:起源、特性、应用领域及如何为学其他语言打基础

C语言(C Language) 发音(Pronunciation):C yǔyn 大致意思(General Meaning):C语言是一种普遍使用的高级程序设计语言,在软件研发以及系统编程方面有着广泛运用。 详细阐…...

C语言:通用高级编程语言,现代编程语言母语及应用领域介绍

C语言,是一种被称作通用的、高级的编程语言,它是在1972年,由美国贝尔实验室的Dennis Ritchie进行开发的。C语言具备简洁、高效以及可移植的特性,在系统软件、嵌入式系统和应用程序开发当中被广泛应用。 现代编程语言的母语 有这样…...

cmu15445 25fall lec3个人笔记

lec3 database storage从应用层面转到构建层面query-planning->operator execution->access method->buffer pool manager->disk manageragendafile storage,page layout,tuple layout 行(row)为主存储顺序io(sequencial)耗时少于随机io(random access) 所以在DBMS…...

API 安全: 保护 AI 应用的交互接口

API 安全: 保护 AI 应用的交互接口你好,我是陈涉川,欢迎你来到我的专栏。在前面的章节中,我们刚刚结束了模型微调的炼狱,成功让大模型记住了企业的安全基线,并掌握了复杂的代理(Agent&#xff0…...

企业用智能体要投入多少成本?2026避坑指南与主流产品横评

2026年3月,AI Agent 正处于从“生成式问答”向“自主执行”跨越的爆发期。 企业在考虑企业用智能体要投入多少成本时,绝不能只看一张软件报价单。 真正的成本是由算力消耗、Token思维税、隐性维保、人力溢价构成的综合体系。 作为深耕自动化领域7年的评测…...

【AI智能体】——OpenClaw(龙虾)深度研究分享(五)clawhub: command not found 全网最稳解决方案

🦞 OpenClaw 终极排坑:clawhub: command not found 全网最稳解决方案 (Windows / Mac / Linux 全平台通用・保姆级)🔥 前言 最近 OpenClaw(小龙虾)真的火炸了! 但 80% 的人刚装上就卡…...

当LSTM遇上注意力:手把手教你玩转时序预测

Attention-LSTM时序预测,单输入单输出 基于注意力机制attention结合长短期记忆网络LSTM时间序列预测, 单输入单输出模型 MATLAB版本为2020b及其以上 中文注释清晰,非常适合科研小白 评价指标包括:R2、MAE、MSE、RMSE等时序预测总让人头疼&…...