问题标签 [method-resolution-order]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
90 浏览

c# - 从方法签名中删除通用参数

我的图书馆里有这样的方法

我想重构它并删除泛型参数。

它如何影响依赖于我的库的代码?他们需要重建吗?
他们是否遇到编译错误?
如果他们使用反射来调用这个方法怎么办?

如果我同时创建它们,那么方法解析将始终选择通用的。如何使通用版本在以后的版本中弃用和过时?

0 投票
0 回答
24 浏览

python - 为什么 super call 会改变调用父类的 init 方法的行为?

我试过阅读 python2.7文档,但不幸的是没有机会理解。

为什么会这样?它如何与 init 内部的 MRO 和 super call 连接?

第一个例子:

这输出:

现在让我们删除第一个父级的 init 内部的 super 调用:

输出:

现在仅将其保留在第一个父级中:

输出:

现在从父母双方删除:

输出:

0 投票
2 回答
970 浏览

r - 在 MAC 中使用 Microsoft R Open 3.3.1 时出现警告消息

我正在使用带有 Microsoft R Open 3.3.1 的 Mac OS X EL Capitan 10.11.6。

遵循安装 MRO 的说明并全新安装 后XQuartz 2.7.9,每当我想安装任何 R 包时都会出现以下错误,例如,在安装时MASS,我会看到以下警告消息。好像不影响使用,但是每次看到这个警告就烦。

0 投票
1 回答
240 浏览

python - 为什么 Python 的 C3 MRO 依赖于一个通用的基类?

当我读到 Python 的 C3 方法解析顺序时,我经常听到它被简化为“孩子在父母之前,尊重子类的顺序”。然而,这似乎只有在所有子类都继承自同一个祖先时才成立。

例如

这里KID的MRO是:KID, A, B, X

但是,如果我将 B 改为:

KID 的 MRO 变为:KID、A、X、B

似乎我们在搜索完所有 KID 的父母之前正在搜索 A 的超类。

因此,现在它似乎比“儿童优先,广度优先”到“儿童优先,如果有共同祖先,则广度优先”更不直观,否则深度优先。

如果一个类停止使用一个共同的祖先,那么 MRO 会发生变化(即使除了那个链接之外整个层次结构是相同的),并且您开始调用更深层次的祖先方法而不是该类中的方法,这将是一个很大的问题。

0 投票
1 回答
525 浏览

python - Python中多重继承中的方法解析

我试图了解多重继承中的方法解析顺序。这是我正在使用的代码。当我尝试创建类“ClassC”的对象时,只有 ClassA 的构造函数被调用。在这种情况下如何解决方法?

输出:

0 投票
1 回答
312 浏览

c# - 在类中调用重载扩展方法

考虑以下代码:

我怎样才能调用我的重载(至少 VS 告诉我ToString()+1 overload)扩展方法?由于Test从 .NET Framework 继承(沿 .NET Framework afaik 中的所有类)object。该类object具有ToString()返回类似<namespace-wher-the-class-is-locatet.<class-name>. 但是,如果我想要ToString()自己的实现不带其他参数怎么办?

不,我不想ToString()在课堂上实施。我想把它作为一种扩展方法。(就像 SecureString 的扩展,将其从非托管、加密转换回托管、解密)

提前致谢!

0 投票
1 回答
2381 浏览

python - Python 的 MRO、C3 线性化是否深度优先?经验上不

我正在阅读Python Multiple Inheritance (on Programiz),然后我发现了这个 StackOverflow 问题,Method Resolution Order (MRO) in new-style classes?但是在这个问题中,一些像 Alex Martelli 这样的程序员说它使用了深度优先的方法,我对此表示怀疑。

例子:

因此,如果我基于 MRO 构建图表,那么根据深度优先它应该遵循以下内容:

在此处输入图像描述

路径应该是:

A-->B-->C-->E-->F-->G-->D-->H

但是如果你运行上面的代码,你会得到:

因为它遵循这条路径:

A-->B-->C-->E-->D-->F-->G-->H

现在,我对节点“D”或“D”类的深度感到困惑,它首先出现在早期,而在 MRO 中它出现在后面。

这里发生了什么?

0 投票
2 回答
1415 浏览

python - Python 多重继承和 MRO

我目前正在学习 Python 考试,但我还不了解 Python 3 中的 MRO 和线性化。

例如,在一个作业中,有一个问题,在 A 类的线性化中,E 是否可能出现在 C 之前。

如何确定是否可行?如何尽可能简单地描述线性化算法(C3)?我非常感谢有关这方面的各种解释和资源,因为我很难理解 Python 中的线性化。

提前非常感谢!

0 投票
1 回答
974 浏览

python - 为什么在 MRO 中以这种方式排序课程?

我对 Python MRO 有疑问对于此代码:

我得到这个输出:

(<class '__main__.A'>, <class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.E'>, <class '__main__.G'>, <class '__main__.H'>, <class '__main__.F'>, <class 'object'>)

为什么我得到<class '__main__.C'>之前<class '__main__.E'>

我以为会是:

  1. A
  2. D, B,E
  3. E, F| C, H| G,H

等等

0 投票
1 回答
89 浏览

python - `.__mro__` 和 `.mro()` 是 CPython 实现细节吗?

Pythontype.mro()记录在第 4.13 节中。引入的特殊属性:

该实现向几个相关的对象类型添加了一些特殊的只读属性。其中一些不是由 dir() 内置函数报告的。

这是否意味着这些是其他 Python 实现中可能不存在的 CPython 实现细节?