問題タブ [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 に答える
90 参照

c# - params パラメータと通常のパラメータ

どの foo メソッドが呼び出されますか? なぜ?

0 投票する
1 に答える
61 参照

python - 基本クラスで「super()」する必要がありますか?

Python 3 では、次のように継承されたクラスから super を使用します。

上記のコード スニペットでは、Orangeクラスはクラスから継承されFruitます。親クラスを見てみましょう

MRO を効果的に機能させるには、親/基本クラスから super を呼び出す必要がありますか?

0 投票する
2 に答える
73 参照

python - Python: MRO に対して子クラス オブジェクトから親クラスの関数を呼び出す方法

上記のコードは、MRO に従って 'inside b' を出力します。d のオブジェクトを使用してクラス C から関数を呼び出す方法はありますか?

0 投票する
2 に答える
417 参照

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 対 488 ns)。

キャッシュを探しているときに偶然見つけましたtype.mro()。それは正当に思えますが、疑問に思います: に頼ることができますかtype.__mro__、それとも電話する必要がありますtype.mro()か? そして、どのような条件下で前者を回避できますか?

type.__mro__さらに重要なことは、無効になるにはどのような条件が発生する必要があるかということです。

たとえば、既存のクラスの mro を変更する新しいサブクラスが定義/作成された場合、既存のクラスは.__mro__すぐに更新されますか? これは、新しいクラスを作成するたびに発生しますか? クラスタイプの一部になりますか?どの部分?..またはそれは何type.mro()ですか?

もちろん、type.__mro__実際には、特定のタイプの mro 内のオブジェクトを指すキャッシュされた名前のタプルであると仮定しています。その仮定が間違っている場合。では、それは何ですか?(おそらく記述子か何か..)そして、なぜそれを使用できる/できないのですか?

編集:それが記述子である場合、次の両方として、その魔法を学びたいと思います:type(type.__mro__) is tupleおよびtype(type(type).__mro__) is tuple(つまり:おそらく記述子ではない)

編集:これがどの程度関連しているかはわかりませんがtype('whatever').mro()、リストをtype('whatever').__mro__返しますが、タプルを返します。(いや?)幸いなことに、そのリストに追加しても、問題の型 (この場合は str) の of/on__mro__への呼び出しまたはその後の呼び出しは変更されません。.mro()

助けてくれてありがとう!

0 投票する
1 に答える
463 参照

python - Python: 属性 MRO を決定する方法

オブジェクトの属性にアクセスすることで、オブジェクトの mro を簡単に判断でき__mro__ます。

私の場合、私たちが経験している現在の mro 地獄を避けるために、もつれを解こうとしている非常に複雑なヒエラルキーがあります。

次のような非常に長い mro チェーンがあります。

これは質問のために短縮されていますが、この場合は19クラスに要約されます。

私は現在問題を抱えています: これらのクラスのどれから python がas_viewメソッドを解決しているかを知る必要があります。

as_viewこれらを順番にチェックできることはわかっていますが、呼び出されている が正しいものではないため、何が間違っているのかわかりません。

メソッドの呼び出しは非常に単純CompanyUserViewSetです。Rest Framework がルーターの URL を構築するために使用している があります。

オブジェクトとその属性 (またはメソッド) の 1 つが与えられた場合、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 の動作が異なるのはなぜですか? これはバグですか?