問題タブ [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 - スーパーコールが親クラスのinitメソッドを呼び出す動作を変更するのはなぜですか?

私はPython2.7のドキュメントを読もうとしましたが、残念ながら理解する機会はありません.

なぜそれが起こるのですか?MRO と init 内のスーパー コールとはどのように接続されていますか?

最初の例:

これは以下を出力します:

次に、最初の親の init 内のスーパー コールを削除します。

出力:

最初の親でのみ保持します。

出力:

両方の親から削除します。

出力:

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 が変更され (その 1 つのリンクを除いて全体的な階層は同じですが)、そのクラスのメソッドではなく、より深い祖先メソッドを呼び出すようになるというのは、かなりの落とし穴です。

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

python - Python の多重継承でのメソッド解決

複数の継承でメソッド解決順序を理解しようとしています。私が使用しているコードは次のとおりです。クラス 'ClassC' のオブジェクトを作成しようとすると、ClassA のコンストラクターのみが呼び出されます。この場合、メソッドはどのように解決されますか?

出力:

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 投票する
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. DBE
  3. EF| CH| GH

等々