問題タブ [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.
c# - params パラメータと通常のパラメータ
どの foo メソッドが呼び出されますか? なぜ?
python - 基本クラスで「super()」する必要がありますか?
Python 3 では、次のように継承されたクラスから super を使用します。
上記のコード スニペットでは、Orange
クラスはクラスから継承されFruit
ます。親クラスを見てみましょう
MRO を効果的に機能させるには、親/基本クラスから super を呼び出す必要がありますか?
python - Python: MRO に対して子クラス オブジェクトから親クラスの関数を呼び出す方法
上記のコードは、MRO に従って 'inside b' を出力します。d のオブジェクトを使用してクラス C から関数を呼び出す方法はありますか?
python - Python で `super()` からインスタンス メソッドの次の行の親クラスを取得するにはどうすればよいですか
super() 関数で取得したインスタンスの型が知りたいです。私は試しprint(super())
てみました__print(type(super()))__
結果は
これらの結果でsuper().__init__()
、正しいコンストラクターをどのように呼び出すのか疑問に思っていました。
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()
助けてくれてありがとう!
python - Python: 属性 MRO を決定する方法
オブジェクトの属性にアクセスすることで、オブジェクトの mro を簡単に判断でき__mro__
ます。
私の場合、私たちが経験している現在の mro 地獄を避けるために、もつれを解こうとしている非常に複雑なヒエラルキーがあります。
次のような非常に長い mro チェーンがあります。
これは質問のために短縮されていますが、この場合は19
クラスに要約されます。
私は現在問題を抱えています: これらのクラスのどれから python がas_view
メソッドを解決しているかを知る必要があります。
as_view
これらを順番にチェックできることはわかっていますが、呼び出されている が正しいものではないため、何が間違っているのかわかりません。
メソッドの呼び出しは非常に単純CompanyUserViewSet
です。Rest Framework がルーターの URL を構築するために使用している があります。
オブジェクトとその属性 (またはメソッド) の 1 つが与えられた場合、Python がそれを解決しているクラスをどのように判断できますか?
python - Python 2.7 MRO の動作がおかしい
そのため、私は Python 2.7 の多重継承と MRO の素晴らしい世界について少し調査を行っており、読みながらさまざまな例を試していたところ、本当に困惑するものに出会いました。
これで、古典的なダイヤモンド MI の例が得られました。
私が読んだすべての MRO リソースで、この例には DBCA の MRO が含まれている必要があるため、D を初期化すると "C" が出力されますが、代わりに "A" が出力されます。奇妙なことに、A、B、C、または D の定義をそのようなもののサブクラスに変更すると、int
「C」を出力するという予想される動作が得られます
基本クラスがプリミティブ型であるかどうかによって、クラス構造の MRO の動作が異なるのはなぜですか? これはバグですか?