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

news2026/3/17 8:42:27
面向对象编程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都是不可或缺的编程思想也是你从“初级开发者”迈向“中级开发者”的关键一步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2418853.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…