問題タブ [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.

0 投票する
3 に答える
2982 参照

python - Python メタクラス

私は次のようにPythonでクラスをハッキングしてきました:

私にはかなりきれいに見えます。クラス A を取り、そこから派生した新しいクラスを作成します。このクラスには、f を呼び出す追加のメソッドがあり、新しいクラスを A に再割り当てします。

これは Python のメタクラス ハッキングとどう違うのですか? これに対してメタクラスを使用する利点は何ですか?

0 投票する
6 に答える
10017 参照

c++ - C++ でメタクラスを実装するにはどうすればよいですか?

メタクラスとは何かについて少し読んでいますが、C++ で実現できるかどうか知りたいです。

Qt ライブラリが MetaObjects を使用していることは知っていますが、それを実現するために C++ の拡張機能を使用しています。C++で直接可能かどうか知りたいです。

ありがとう。

0 投票する
4 に答える
691 参照

python - インスタンスメソッドとして呼び出し可能?

CallableWrappingMeta新しいクラスの本体を歩き、そのメソッドをクラスでラップするメタクラスがあるとしましょうInstanceMethodWrapper:

ダミーのラッパーは、引数が入ってくるとそれを出力するだけです。しかし、何か目立つことに気付くでしょう: メソッドはインスタンス オブジェクト レシーバーに渡されInstanceMethodWrapperません。クラスの作成中 (メタクラスが処理された後) にインスタンス メソッドに変換されます。

考えられる解決策は、クラスの代わりにデコレータを使用してメソッドをラップすることです。その関数はインスタンス メソッドになります。しかし、実際にInstanceMethodWrapperは はもっと複雑です。API を提供し、メソッド呼び出しイベントを発行します。クラスはより便利です (そしてパフォーマンスは向上しますが、これはそれほど重要ではありません)。

私もいくつかのデッドエンドを試しました。サブクラスtypes.MethodType化して、types.UnboundMethodTypeどこにも行きませんでした。少し内省すると、彼らはtype. そのため、両方をメタクラスとして使用してみましたが、どちらもうまくいきませんでした。メタクラスとして特別な要求があるのか​​もしれませんが、現時点では文書化されていない領域にいるようです。

何か案は?

0 投票する
3 に答える
787 参照

python - __metaclass__ は Python でメタクラスの使用を強制すべきではありませんか?

Python のメタクラスについて学習しようとしています。主なアイデアはわかりましたが、メカニズムを起動できないようです。__metaclass__私が理解しているように、グローバルまたはクラスレベルで M に設定することにより、クラス K を構築するときに M をメタクラスとして指定できます。これをテストするために、次のプログラムを作成しました。

ただし、実行すると、次の出力が得られます。

1と2の後に「スペインの雨」を見るべきではないですか?何が起きてる?

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

reflection - Groovy クラスで metaClass プロパティを「非表示」にする方法

私はいくつかの単純なグルーヴィーなクラスを作成しています。

リフレクションに依存してオブジェクトのプロパティ (年齢や名前など) を引き出す Java メソッドで使用されています。問題は、metaClass もプロパティとして表示されることです。このプロパティを無視するように Java メソッドを更新することはできません。metaClass プロパティを null に設定しようとしましたが、うまくいきませんでした。

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

grails - run-app と run-war の Grails の動作の違い

私は Groovy と Grails に比較的慣れていないので、空き時間にそれらを試しています。を使用して正常に実行できる小さなテスト Grails アプリケーションを持ってgrails run-appgrails run-warますが、エラーが発生します。

メソッドでは、grails-app/conf/BootStrip.initいくつかのプロパティ ゲッターをDefaultGrailsControllerClassandに追加していDefaultGrailsApplicationます。

私のgrails-app/views/layouts/main.gsp中で、私はこれを使用しています:

これは で正常に動作しますrun-appが、 で実行するとrun-war、次のようになります。

Grails 1.1.1 および 1.2-M1 でこれを試しましたが、同じ結果が得られました。BootStrap.initメソッドが ( 経由で) 呼び出されていることを確認しましたprintlnが、 に加えられた変更metaClassrun-war.

私が見逃しているものはありますか?

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

python - Python でクラス属性をクラスに逆マッピングする

私は Python にいくつかのコードを持っており、そこにはたくさんのクラスがあり、それぞれに属性があります_internal_attribute。これらの属性から元のクラスへのマッピングを生成できるようにしたいと考えています。基本的に私はこれを行うことができるようにしたいと思います:

ここで欠けているのは、magic_reverse_mappingdict を生成する方法です。私は、メタクラスに A と B を生成させることが、これを行う正しい方法であるという直感を持っています。それは正しいと思いますか?

0 投票する
3 に答える
5892 参照

python - 継承されたDjangoモデルのMetaクラスを使用して、継承された抽象モデルで定義されたフィールドを構成することはできません

継承モデルのMetaクラスのプロパティを使用して、継承ツリーの上位にある抽象モデルで定義されたフィールドを構成したいと思います。

OwnedModelフォームの名前フィールドのヘルプテキストに「この所有オブジェクトの意味のある名前」と表示してほしい。ただし、そうではありません。「owned」という単語が欠落しています。これは、モデルのセットアップ時に、OwnedModel.Metaではなく、NamedModel.Metaのverbose_nameが使用されていることを示しています。

これは、継承の観点から私が期待していることではありません。Meta.verbose_nameがフィールドの抽象モデルではなく、非抽象モデルクラスの値を参照するようにフィールドを作成する方法はありますか。定義されましたか?

それとも私は気が狂っていますか?

(これは些細な例のように思えるかもしれませんが、それは次のとおりです。しかし、私がやろうとしているより重要で複雑なことの要点を説明するためだけのものです)

よろしくお願いします。

0 投票する
3 に答える
1588 参照

groovy - Groovy: metaClass を使用してインスタンスとクラスにメソッドを追加しても機能しませんか?

以下のコードを参照してください。metaClass を使用してメソッドがクラスに追加される前に作成されたクラスの古いインスタンスは、メソッドを理解するべきではありませんか? 「PROBLEMATIC LINE」コメントの下の assert ステートメントは、古いparentDirインスタンスがblech()メッセージを理解できないため、そうすべきではないと思われるときに実行されます。

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

groovy - Groovy のクラスに新しいクロージャーを追加する方法

Snipplrから

ここにスクリプトコードがあります。コメントには質問とスローされた例外があります