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

python - Python:メタクラスをサブクラス化する

さまざまなクラスのメソッドをグローバルレジストリに配置するために、メタクラスを持つデコレータを使用しています。デコレータタグ、メタクラスは関数をレジストリに配置します。

これで、2つの関数レジストリが必要になるようになりました。最初に考えたのは、メタクラスをサブクラス化し、他のレジストリを配置することでした。そのためには、新しいメソッドを単に書き直す必要があります。

書き換えは冗長なコードを意味するので、これは私が本当に望んでいることではありません。したがって、 newが実行されたときに読み取ることができるメタクラス内に属性を配置する方法を誰かが指定できると便利です。これにより、新しいを書き直すことなく、適切なレジストリを配置できます。

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

groovy - 単一のメタクラス メソッドを削除

私は Groovy を学び始めており、現在メタクラスの機能を調べています。新しいメソッドを追加してすべてのメソッドを削除する例を見てきましたが、単一のメソッドを削除することについては何もありません。例えば:

明らかな副作用があります。今、私はあなたが言うことができることを見てきました

すべてのメソッドを削除します。私は、人が次の線に沿って何かを言うことができると期待しています

String.foo() を削除しますが、String.bar() は残しますが、このステートメントは何の効果もないようです。bar() やその他の追加されたメソッドに影響を与えずに、メソッド foo() を定義しないようにする方法はありますか?

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

groovy - Groovyでクラスの「各」メソッドを動的にオーバーライドするにはどうすればよいですか?

Groovyは、each()およびその他の多数のメソッドを java.lang.Object に追加します。Groovy メタクラスを使用して Java クラスのデフォルトの each() を動的に置き換える方法がわかりません。

新しいメソッドを追加する方法を見ることができます:

ただし、メソッドをオーバーライドする場合、同じアプローチは機能しないようです。

私は何を間違っていますか?Groovyでeach()を動的にオーバーライドするにはどうすればよいですか?

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

python - SQLAlchemy での動的クラスの作成

時間の経過とともに数が増える複数の外部データ ソースにアクセスするには、SQLAlchemy クラスを作成する必要があります。私たちはコア ORM モデルに宣言ベースを使用しており、autoload=True を使用して新しい ORM クラスを手動で指定し、マッピングを自動生成できることを知っています。

問題は、次のようにして動的に生成できるようにする必要があることです。

そしてそれを動的に次のようなものに変えます:

接続を開き、クエリを実行し、接続を閉じるために、クラスが必要以上に長く存続することは望ましくありません。したがって、理想的には、上記の「格納された」変数のアイテムをデータベースに配置し、必要に応じてそれらをプルできます。もう 1 つの課題は、オブジェクト名 ("MyObject" など) がさまざまな接続で使用される可能性があるため、一度定義してそのままにしておくことができないことです。

これをどのように達成できるかについての提案は大歓迎です。

ありがとう...

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

python - Python で getattr を使用してメソッドを呼び出す

getattr を使用してメソッドを呼び出す方法は? 「oposite_」という単語で始まる他のクラスの存在しないメソッドを呼び出すことができるメタクラスを作成したいと考えています。メソッドは同じ数の引数を持つ必要がありますが、反対の結果を返す必要があります。

しかし、問題は

NoneType オブジェクトを返します。

これに対処する方法は?

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

python - Django で admin によって生成されたフォーム

管理パネルからフォームを作成できるようにする必要があります。プロセスは次のようになります: [フォームを追加] をクリックして、フォームの送信先の電子メールを入力します。もちろん、フィールド名、タイプ、および必要な場合は、いくつかのフィールド (おそらくインラインのおかげです) を入力します。ユーザーはフォームを表示して入力し、送信できる必要があり、データは管理者に指定された電子メールに送信される必要があります。

すべてが非常に簡単に見えますが、私の観点からは、メタクラス プログラミングのスキルが必要です。

誰かが Django の goot フォーム ビルダーを教えてくれますか、または少なくともそのようなものを作成するためのヒントをいくつか教えてくれますか? django-forms-builderを見つけましたが、少し制限が多すぎます。

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

ruby - Ruby オブジェクトのインスタンスが与えられた場合、そのメタクラスを取得するにはどうすればよいですか?

通常、Ruby オブジェクトの特定のインスタンスのメタクラスを取得するには、次のようにします。

任意のクラスの任意のオブジェクト インスタンスのメタクラスを知りたいだけで、のクラスで (または同様の) メソッドobjを定義したくないとします。metaclassobj

それを行う方法はありますか?

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

python - メタクラスの多重継承の不整合

どうしてこれなの:

了解しました。期待どおりに機能します。

でも、これ:

大丈夫ではなく、このように爆破しますか?:

0 投票する
7 に答える
22007 参照

python - デコレータを使用してクラス メソッドを自動登録する

クラスメソッドをグローバルリポジトリに自動的に「登録」するPythonデコレータを作成できるようにしたいと考えています(いくつかのプロパティを使用)。

コード例:

ロードが完了すると、どこかに次を含むdictがあることを望みます:

これは可能ですか?

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

python - 算術演算子の装飾| メタクラスを使用する必要がありますか?

算術演算が適用された後、指定された範囲内の値を制限するオブジェクトを実装したいと思います。以下のコードは正常に機能しますが、メソッドを無意味に書き直しています。確かに、これを行うためのよりエレガントな方法があります。メタクラスは進むべき道ですか?