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

医疗网站建设新闻做企业网站有效果吗

医疗网站建设新闻,做企业网站有效果吗,正规的ui设计培训学校,国外服装网站在 Python 中#xff0c;MRO#xff08;Method Resolution Order#xff0c;方法解析顺序#xff09;是指类继承体系中#xff0c;Python 如何确定在调用方法时的解析顺序。MRO 决定了在多继承环境下#xff0c;Python 如何寻找方法或属性#xff0c;即它会根据一定规则…在 Python 中MROMethod Resolution Order方法解析顺序是指类继承体系中Python 如何确定在调用方法时的解析顺序。MRO 决定了在多继承环境下Python 如何寻找方法或属性即它会根据一定规则从父类中查找方法或属性避免重复继承带来的歧义。 1. MRO 介绍 在 Python 中类可通过多继承即从多个父类继承来获得不同父类的功能。为了避免由于多继承带来的冲突和不确定性Python 使用了 MRO 来确定方法调用的顺序。 从 Python 2.3 [1]开始Python 使用 C3 线性化算法 来决定类的 MRO。Python 的继承系统遵循该算法这使得继承路径清晰且无二义性。 2. MRO 计算步骤 1MRO 计算步骤 从当前类开始将当前类添加到 MRO 列表的末尾。遍历当前类的基类列表。对于每个基类如果它还没有被添加到 MRO 列表中将其添加到 MRO 列表的末尾并递归地重复步骤 2。如果基类列表为空则结束。 2查看类的 MRO 在 Python 中可通过 __mro__ 属性或内置的 mro() 方法来查看类的 MRO。如下所示 class A:def foo(self):print(A)class B(A):def foo(self):print(B)class C(A):def foo(self):print(C)class D(B, C):pass# 查看类 D 的 MRO print(D.__mro__) # 或者 print(D.mro())输出结果显示 D 类的 MRO 顺序 (class __main__.D, class __main__.B, class __main__.C, class __main__.A, class object)这个 MRO 表示 Python 将首先在 D 类中查找方法如果没有找到再去 B 类然后是 C 类接着是 A 类最后是 object 类。 3. C3 线性化算法 1算法特性 单调性MRO 列表在继承过程中是单调的这意味着一旦一个类被添加到 MRO 中它就不会再被添加到后面的类中。非循环性MRO 列表不会包含任何循环。保持子类顺序如果一个类 B 继承自类 A 和类 C那么 A 应该在 C 之前出现在 MRO 中。 2简单示例 假设有以下类继承关系如下所示 class A:passclass B(A):passclass C(A):passclass D(B, C):passMRO 计算过程如下所示 D 类的直接父类是 B 和 C因此 MRO 将从这两个类开始。为了保证类 B 在类 C 之前解析因为 B 在 D 类的声明中出现在前面MRO 按顺序选择 B 和 C。然后MRO 会解析 B 和 C 各自的父类 A确保 A 只出现一次且在 B 和 C 之后。最后所有类都继承自 object 类。 这样最终 MRO 为 [D, B, C, A, object]。 4. super() 函数与 MRO 在多继承中super() 函数使用 MRO 来决定调用顺序。super() 会沿着 MRO 顺序依次调用下一个类的方法。如下所示 class A:def foo(self):print(A)class B(A):def foo(self):super().foo()print(B)class C(A):def foo(self):super().foo()print(C)class D(B, C):def foo(self):super().foo()print(D)d D() d.foo()这里 super() 将沿着 D 类的 MRO 顺序调用 foo() 方法。输出结果为 A C B D这表明 Python 沿着 MRO 的顺序依次调用了 A - C - B - D。简单理解foo() 方法执行顺序与 D 类的 MRO 顺序相反。 5. MRO 解决的问题 1避免菱形继承问题 在多重继承中如果不同的父类继承自同一个祖先类MRO 确保这个祖先类的方法只会调用一次。 2保证方法查找的有序性 MRO 保证了在多继承中有明确的解析顺序不会出现不确定性或冲突。 MRO 是 Python 中一个复杂但重要的概念它通过 C3 线性化算法计算出一个类的所有基类的有序列表这个列表决定了方法或属性在多重继承中的查找顺序。理解 MRO 有助于编写更清晰、更健壮的 Python 代码。 参考文献 [1] The Python 2.3 Method Resolution Orderhttps://www.python.org/download/releases/2.3/mro/ [2] Make MRO topological sortedhttps://discuss.python.org/t/make-mro-topological-sorted/32300 NLP工程化(星球号)
http://www.dnsts.com.cn/news/156141.html

相关文章:

  • 做好网站维护管理做网站做地区好还是全国的好处
  • 建立电子商务网站做进行网站推广赚钱
  • wordpress英文企业网站模板h5建站网站
  • 餐饮公司网站建设的特点wordpress 管理员权限设置密码
  • 微信小程序api接口优化培训课程
  • 如何建设英文网站安吉哪里做网站好
  • 如何设计网站首页导航中文域名注册官网
  • 电商网站建设计入什么科目厚街网站建设价格
  • 网站建设服务范围c#网站开发+pdf
  • 专做外贸库存的网站销售管理软件系统
  • 河南网站建设的详细策划影视剪辑培训班
  • 北京大龙建设集团有限公司网站首页福建住房和城乡建设厅网站一体化平台
  • 芜湖做网站的公司排名温州专业网站开发网站设计
  • 公司做网站最低需用多少钱wordpress源代码在哪里
  • 住房和建设部网站共享空间网站开发公司
  • 免费php网站系统网站设计的目的和意义
  • 每月网站流量杭州制作网站个人
  • 给别人做网站挣钱吗wordpress搭建注册会员
  • 正能量软件不良网站下载什么网站广告做多
  • 三河市建设厅公示网站icp网站备案号查询
  • 有域名有空间怎么做网站公司网站制作仿站
  • 国家网站后缀网络公司开发网站
  • 藁城住房和城乡建设局网站在线文字生成图片
  • 淄博临淄建设局网站建设一个网站怎么赚钱
  • 英文外贸网站源码“一个”网站
  • 网站建设 采集网络营销推广软件
  • 西餐厅网站建设的需求分析小网站源码
  • 做网站知名公司做装修网站价格
  • 济南营销型网站江门众瞬网络科技有限公司
  • 外贸网站建设模版寿光建设银行网站