问题标签 [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 投票
4 回答
2052 浏览

python - Python中使用reduce和decorator的级联函数

我有一个名为的方法render,它实际上是由一个子类实现的,并像这样调用:

我有一个 callables 列表[c1, c2, c3]。我想在cascade_callables方法中做这样的事情,应该是这样的:

所以本质上,我正在尝试render像这样工作而不修改实际的实现:

我尝试了这样的事情来作为我可以使用的装饰器reduce

但我得到了这个:

使用我在这个问题中尝试解释的范式在 Python 2.7 中解决这个问题的最佳方法是什么?

0 投票
4 回答
90 浏览

c# - params 参数和普通参数

调用哪个 foo 方法?为什么?

0 投票
3 回答
85313 浏览

python - TypeError:无法创建一致的方法解析顺序(MRO)

这是我计划用于我的游戏的代码,但它抱怨 MRO 错误:

0 投票
2 回答
2397 浏览

python - 多重继承中的Python self和super

在PyCon 2015 上Raymond Hettinger 的演讲“超级考虑超级演讲super”中,他解释了在多继承上下文中使用 Python 的优势。这是雷蒙德在演讲中使用的例子之一:

台下有人雷蒙德,self.get_dough()改用的区别super().get_dough()。我不太了解 Raymond 的简短回答,但我编写了此示例的两个实现以查看差异。两种情况的输出相同:

如果您将课程顺序从 using 更改OrganicPizza(Pizza, OrganicDoughFactory)OrganicPizza(OrganicDoughFactory, Pizza)using self.get_dough(),您将得到以下结果:

Making pie with pure untreated wheat dough

但是,如果您使用super().get_dough()这是输出:

Making pie with insecticide treated wheat dough

我理解super()雷蒙德解释的行为。但是self在多重继承场景中的预期行为是什么?

0 投票
1 回答
61 浏览

python - 我们应该在基类中“super()”吗?

在 Python 3 中,我使用来自继承类的 super ,如下所示:

在上面的代码片段中,Orange类继承自Fruit类。看看父类

我们是否需要从父类/基类调用 super 才能使 MRO 有效工作?

0 投票
2 回答
73 浏览

python - python:如何针对MRO从子类对象调用父类的函数

上面的代码将根据 MRO 打印 'inside b'。有没有办法使用 d 的对象从类 C 调用函数?

0 投票
2 回答
417 浏览

python - python - 如何从Python中的`super()`获取实例方法的下一个父类

我想知道从 super() 函数获得的实​​例的类型。我试过print(super())__print(type(super()))__

结果是

有了这些结果,我想知道如何super().__init__()调用正确的构造函数。

0 投票
1 回答
120 浏览

python-3.x - 是否有令人信服的理由调用 type.mro() 而不是直接迭代 type.__mro__ ?

是否有令人信服的理由来调用type.mro()而不是直接迭代type.__mro__?访问速度实际上快了约 13 倍(36ns vs 488ns)

我在寻找缓存时偶然发现了它type.mro()。这似乎是合法的,但它让我想知道:我可以依靠type.__mro__,还是必须打电话type.mro()?在什么情况下我可以摆脱前者?

更重要的是,必须发生哪些条件type.__mro__才能无效?

例如,当定义/创建一个改变现有类的 mro 的新子类时,现有类是否会.__mro__立即更新?每次创建新班级时都会发生这种情况吗?这使它成为类类型的一部分?哪一部分?..或者这type.mro()是关于什么的?

当然,所有这些假设type.__mro__实际上是一个缓存名称的元组,它们指向给定类型的 mro 中的对象。如果该假设不正确;那这是什么?(可能是描述符或其他东西..)为什么我可以/不能使用它?

编辑:如果它是一个描述符,那么我很想学习它的魔力,因为两者都是:type(type.__mro__) is tupletype(type(type).__mro__) is tuple(即:可能不是描述符)

编辑:不确定这有多相关,但type('whatever').mro()返回一个列表,而type('whatever').__mro__返回一个元组。(不?)幸运的是,附加到该列表不会更改对相关类型(在本例中为 str)的__mro__或后续调用。.mro()

谢谢您的帮助!

0 投票
1 回答
463 浏览

python - Python:如何确定属性 MRO

__mro__我们可以通过访问其属性轻松确定对象的 mro 。

就我而言,我有一个非常复杂的层次结构,我试图解开它以避免我们正在经历的当前 mro 地狱。

我有一个很长的 mro 链,像这样:

为了这个问题,这被缩短了,但在这种情况下,它总结为19类。

我目前有一个问题:我需要知道 python 正在从这些类中的哪个类中解析该as_view方法。

我知道我可以按顺序检查这些,但我看不出我做错了什么,因为as_view被调用的不是正确的。

对该方法的调用非常简单,我们有一个CompanyUserViewSetRest Framework 用于构建路由器的 url:

给定一个对象及其属性(或方法)之一,我如何从 python 解析的类中确定它?

0 投票
1 回答
272 浏览

python - Python 2.7 MRO 行为异常

所以我一直在对 Python 2.7 多重继承和 MRO 的美妙世界进行一些研究,并且在阅读时我一直在尝试不同的示例,我遇到了一些让我非常困惑的事情。

这样你就有了经典的钻石 MI 示例:

在我读过的所有 MRO 资源中,这个例子应该有一个 DBCA 的 MRO,所以初始化 D 应该打印“C”,但它会打印“A”。奇怪的是,当我将 A、B、C 或 D 的定义更改为类似它的子类时,int它给了我打印“C”的预期行为

为什么类结构的 MRO 行为会根据基类是否为原始类型而有所不同?这是一个错误吗?