問題タブ [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 投票する
1 に答える
3653 参照

python - classmethod オブジェクトはどのように機能しますか?

Python で classmethod オブジェクトがどのように機能するか、特にメタクラスのコンテキストと__new__. members私の特別なケースでは、に与えられたを反復処理するときに、クラスメソッドメンバーの名前を取得したいと思い__new__ます。

通常のメソッドの場合、名前は単純に__name__属性に格納されますが、クラスメソッドの場合、そのような属性はないようです。__call__属性も存在しないため、クラスメソッドがどのように呼び出されるかさえわかりません。

クラスメソッドがどのように機能するかを説明したり、ドキュメントを教えてもらえますか? グーグルは私をどこにも連れて行かなかった。ありがとう!

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

ruby - ruby のトップレベルでメソッドが定義されている場所は?

トップレベルでは、メソッド定義はプライベートメソッド on になるはずでObjectあり、テストはこれを裏付けているようです:

ただし、以下はトップレベルでも機能します (self.metaは の固有クラスですmain)。

このhelloメソッドは、 main の固有クラスと on で同時に定義されているようObjectです。どうしたの?falseパラメータ toprivate_instance_methodsは、メソッド リストからスーパー クラス メソッドを除外することに注意してください。

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

python - サブクラスで呼び出されていないメタクラス

これがPythonセッションです。

クラスXIを定義した後、Z._new __が呼び出され、発生していない2行を出力することを期待します(メタクラスは継承されますか?)

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

python - Pythonメタクラスとクラスデコレータ

Pythonメタクラスとクラスデコレータの主な違いは何ですか?一方ではできるが、もう一方ではできないことはありますか?

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

python - メタクラスからのメソッドの継承

この質問に示されている列挙コードの例では、以下に再現されていますが、メタクラスの実装とメタクラスからの実装がTOKEN含まれているのはなぜですか?__contains____repr__EnumerationType

次のコードによって例外がスローされ、__contains__実装されていないことが予想されますが、代わりにTrue False.

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

python - pythonはプログラム全体の__metaclass__を変更します

編集:これは本番コードで行うのは本当に悪い考えであることに注意してください。これは私にとって興味深いことでした。家でこれをしないでください!

Pythonでプログラム全体(インタープリター)の__metaclass__変数を変更することは可能ですか?

この簡単な例は機能しています。

しかし、サブモジュールでも機能するように__metaclass__を変更できるようにしたいと思います。したがって、たとえば(ファイルm1.py):

ファイルmain.py:

グローバル__metaclass__がPython3.Xで機能しなくなったことは理解していますが、それは私の懸念事項ではありません(概念実証の場合は私のコード)。では、Python-2.xでこれを実現する方法はありますか?

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

python - Pythonの組み込み__build_class__は何をしますか?

builtinsPython 3.1には、モジュールにわからない新しい組み込み関数があります。

この関数は何をしますか?内部にあるのに、なぜ組み込みである必要があるのですか?type(name, bases, dict)機能の違いは何ですか?

0 投票する
5 に答える
14385 参照

python - メタクラスを定義するときに__init__ではなく__new__を選択する理由はありますか?

私はいつも次のようなメタクラスを設定してきました。

しかし、私はちょうどこのように定義されたメタクラスに出くわしました:

どちらか一方を優先する理由はありますか?

更新:メタクラスでの__new__使用について質問していることを覚えておいてください。__init__私はすでに別のクラスでそれらの違いを理解しています。しかし、メタクラスでは、メタクラスでのクラスの作成時にのみ呼び出される__new__ため、キャッシュの実装には使用できません。__new__

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

objective-c - class_getClassVariable()は何をしますか?

インスタンス変数がクラスのインスタンスに属している場合、クラス変数はメタクラスのインスタンスに属していると思います。しかし、Objective-Cメタクラスでの私の経験から、これはありそうもないことがわかります。

class_getClassVariableとは対照的に何が行われるclass_getInstanceVariableのか、なぜclass_setClassVariableランタイムにがないのか疑問に思っています。

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

perl - Mooseを使用して属性のメタオブジェクトから値のインスタンスを作成するにはどうすればよいですか?

私は、Mooseを使用して、非標準形式に準拠するファイルの読み取りと書き込みを行うシリアル化ツールに取り組んでいます。今のところ、クラス内のオブジェクトのデフォルト値に基づいて次のアイテムをロードする方法を決定しますが、それには独自の欠点があります。代わりに、属性メタクラスの情報を使用して、適切なタイプの新しい値を生成できるようにしたいと思います。'isa'制限が何であるかを判断し、そこからジェネレーターを導出する方法があると思いますが、Moose :: Meta::AttributeまたはClass::MOP::Attributeに役立つ特定のメソッドはありませんでした。

ここにもう少し例があります。次のクラスがあるとしましょう。

(詳細な説明:このファイルタイプのシリアル化の役割My::Role::LoadMy::Role::Save実装します。それらは、接続されているクラスの属性を反復処理し、シリアル化する順序について属性クラスを調べます。)

このMy::Role::Loadロールでは、クラスのメタオブジェクトを反復処理して、使用可能なすべての属性を確認し、Order特性を持つ属性のみを選択できます。

isaここで、メタ属性が表す属性について知る必要があります。今、私はそれのインスタンスを取得し、次のようなものでテストすることによってそれをテストします:

ただし、でわかるように# <-- ERROR PRONE PROBLEM HERE!、このプロセス全体は、最初に属性に値があることに依存しています。値がundefの場合、をロードするかはわかりません。$attribute->get_value($self)代わりに、ロードする必要のある値のタイプに関する情報を取得する方法に置き換えたいと思います。私の問題は、上記でリンクしたドキュメントClass::MOP::AttributeMoose::Meta::Attribute、属性が取得するはずのオブジェクトのタイプを取得する方法がないように見えることです。

属性のタイプ情報は、基本的に私が取得しようとしているものです。

Moose::Meta::TypeConstraint(将来の読者への注意:ここでの答えは私を始めましたが、それ自体が最終的な解決策ではありません。私がここで探していることを実際に行うには、クラスを掘り下げる必要があります。)