問題タブ [metaclass]
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.
python - Python メタクラス
私は次のようにPythonでクラスをハッキングしてきました:
私にはかなりきれいに見えます。クラス A を取り、そこから派生した新しいクラスを作成します。このクラスには、f を呼び出す追加のメソッドがあり、新しいクラスを A に再割り当てします。
これは Python のメタクラス ハッキングとどう違うのですか? これに対してメタクラスを使用する利点は何ですか?
c++ - C++ でメタクラスを実装するにはどうすればよいですか?
メタクラスとは何かについて少し読んでいますが、C++ で実現できるかどうか知りたいです。
Qt ライブラリが MetaObjects を使用していることは知っていますが、それを実現するために C++ の拡張機能を使用しています。C++で直接可能かどうか知りたいです。
ありがとう。
python - インスタンスメソッドとして呼び出し可能?
CallableWrappingMeta
新しいクラスの本体を歩き、そのメソッドをクラスでラップするメタクラスがあるとしましょうInstanceMethodWrapper
:
ダミーのラッパーは、引数が入ってくるとそれを出力するだけです。しかし、何か目立つことに気付くでしょう: メソッドはインスタンス オブジェクト レシーバーに渡されInstanceMethodWrapper
ません。クラスの作成中 (メタクラスが処理された後) にインスタンス メソッドに変換されます。
考えられる解決策は、クラスの代わりにデコレータを使用してメソッドをラップすることです。その関数はインスタンス メソッドになります。しかし、実際にInstanceMethodWrapper
は はもっと複雑です。API を提供し、メソッド呼び出しイベントを発行します。クラスはより便利です (そしてパフォーマンスは向上しますが、これはそれほど重要ではありません)。
私もいくつかのデッドエンドを試しました。サブクラスtypes.MethodType
化して、types.UnboundMethodType
どこにも行きませんでした。少し内省すると、彼らはtype
. そのため、両方をメタクラスとして使用してみましたが、どちらもうまくいきませんでした。メタクラスとして特別な要求があるのかもしれませんが、現時点では文書化されていない領域にいるようです。
何か案は?
python - __metaclass__ は Python でメタクラスの使用を強制すべきではありませんか?
Python のメタクラスについて学習しようとしています。主なアイデアはわかりましたが、メカニズムを起動できないようです。__metaclass__
私が理解しているように、グローバルまたはクラスレベルで M に設定することにより、クラス K を構築するときに M をメタクラスとして指定できます。これをテストするために、次のプログラムを作成しました。
ただし、実行すると、次の出力が得られます。
1と2の後に「スペインの雨」を見るべきではないですか?何が起きてる?
reflection - Groovy クラスで metaClass プロパティを「非表示」にする方法
私はいくつかの単純なグルーヴィーなクラスを作成しています。
リフレクションに依存してオブジェクトのプロパティ (年齢や名前など) を引き出す Java メソッドで使用されています。問題は、metaClass もプロパティとして表示されることです。このプロパティを無視するように Java メソッドを更新することはできません。metaClass プロパティを null に設定しようとしましたが、うまくいきませんでした。
grails - run-app と run-war の Grails の動作の違い
私は Groovy と Grails に比較的慣れていないので、空き時間にそれらを試しています。を使用して正常に実行できる小さなテスト Grails アプリケーションを持ってgrails run-app
いgrails run-war
ますが、エラーが発生します。
メソッドでは、grails-app/conf/BootStrip.init
いくつかのプロパティ ゲッターをDefaultGrailsControllerClass
andに追加していDefaultGrailsApplication
ます。
私のgrails-app/views/layouts/main.gsp
中で、私はこれを使用しています:
これは で正常に動作しますrun-app
が、 で実行するとrun-war
、次のようになります。
Grails 1.1.1 および 1.2-M1 でこれを試しましたが、同じ結果が得られました。BootStrap.init
メソッドが ( 経由で) 呼び出されていることを確認しましたprintln
が、 に加えられた変更metaClass
はrun-war
.
私が見逃しているものはありますか?
python - Python でクラス属性をクラスに逆マッピングする
私は Python にいくつかのコードを持っており、そこにはたくさんのクラスがあり、それぞれに属性があります_internal_attribute
。これらの属性から元のクラスへのマッピングを生成できるようにしたいと考えています。基本的に私はこれを行うことができるようにしたいと思います:
ここで欠けているのは、magic_reverse_mapping
dict を生成する方法です。私は、メタクラスに A と B を生成させることが、これを行う正しい方法であるという直感を持っています。それは正しいと思いますか?
python - 継承されたDjangoモデルのMetaクラスを使用して、継承された抽象モデルで定義されたフィールドを構成することはできません
継承モデルのMetaクラスのプロパティを使用して、継承ツリーの上位にある抽象モデルで定義されたフィールドを構成したいと思います。
OwnedModelフォームの名前フィールドのヘルプテキストに「この所有オブジェクトの意味のある名前」と表示してほしい。ただし、そうではありません。「owned」という単語が欠落しています。これは、モデルのセットアップ時に、OwnedModel.Metaではなく、NamedModel.Metaのverbose_nameが使用されていることを示しています。
これは、継承の観点から私が期待していることではありません。Meta.verbose_nameがフィールドの抽象モデルではなく、非抽象モデルクラスの値を参照するようにフィールドを作成する方法はありますか。定義されましたか?
それとも私は気が狂っていますか?
(これは些細な例のように思えるかもしれませんが、それは次のとおりです。しかし、私がやろうとしているより重要で複雑なことの要点を説明するためだけのものです)
よろしくお願いします。
groovy - Groovy: metaClass を使用してインスタンスとクラスにメソッドを追加しても機能しませんか?
以下のコードを参照してください。metaClass を使用してメソッドがクラスに追加される前に作成されたクラスの古いインスタンスは、メソッドを理解するべきではありませんか? 「PROBLEMATIC LINE」コメントの下の assert ステートメントは、古いparentDirインスタンスがblech()メッセージを理解できないため、そうすべきではないと思われるときに実行されます。
groovy - Groovy のクラスに新しいクロージャーを追加する方法
Snipplrから
ここにスクリプトコードがあります。コメントには質問とスローされた例外があります