問題タブ [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.
smalltalk - Smalltalk スーパークラスとメタクラス?
私はOOPを初めて使用しますが、「手続き型」のバックグラウンドを持っています。
私は現在、GNU Smalltalk と Lovejoy の「Smalltalk: Getting The Message」を介して OOP について理解を深めようとしています。
メタクラスとメタクラス クラスとスーパークラスの違いについて、私は混乱しています。スーパークラス -> クラス -> サブクラスの継承の流れを見ることができます。しかし、メタクラスがどのように/どこに収まるかわかりません.TIA ...
ruby - RubyのBaseとDerivedクラスのメタクラスの関係は?
Ruby ではsuper
、次のコードが示すように、シングルトン メソッド内で使用して、対応するスーパー クラスのシングルトン メソッドを呼び出すことができます。
super
ただし、その呼び出しがwithinDerived.class_method
に到達する方法がよくわかりませんBase.class_method
。メタクラスで定義されていると思いclass_method
ますが、メタクラスに親子関係があるということですか? (実験で確かめることはできません)
更新: この質問をしているのは、基本クラスと派生クラスのメタクラスの間に何らかの関係があることをどこかで見たのを思い出したためです (しかし、それ以上は見つかりません)。実際にどのように機能するかを知ることに加えてsuper
、2 つのメタクラスが完全に分離されているかどうかも確認したいと思います。
python - 型からメタクラスを継承するのは慣例ですか?
私は Python メタクラスを理解しようとしてきたので、いくつかのサンプル コードを調べてきました。私が理解している限り、Python メタクラスは任意の呼び出し可能にすることができます。したがって、メタクラスを次のようにすることができます
しかし、私は多くの人がメタクラスを次のように書いているのを見てきました:
私が見る限り、これらは両方とも同じことをします。代わりに基本クラスを使用する理由はありますか? 慣習ですか?
python - Python クラスの変更
Python のすべてのクラスを変更したいと思います。たとえば、str や int など、Person(object) などがあります。
それらに属性を追加し、そのメソッドの動作方法を変更したいと思います。
これに最適なアプローチはどれですか? メタクラス?
python - 多重継承と組み合わせてメタクラスを使用する TypeErrors
メタクラスと多重継承に関する 2 つの質問があります。1 つ目は、クラスでは TypeError が発生するのに では発生しないのはなぜDerived
ですかDerived2
?
正確なエラー メッセージは次のとおりです。
TypeError: Error when calling the metaclass bases
Cannot create a consistent method resolution order (MRO) for bases object, Klass
super
2 番目の質問は次のとおりです。この場合、なぜ機能しないのですか (__init__
代わりにを使用すると__new__
、super
再び機能します):
そこに私は得る:
TypeError: Error when calling the metaclass bases type.__new__(X):
X is not a type object (str)
Python 2.6 を使用しています。
c - Objective-Cランタイムはどのようにしてルートメタクラスと他のクラスの説明をインスタンス化しますか?
基本的なオブジェクト指向のANSICランタイムを実装し、Objective-Cをガイドとして使用しようとしています。
それらは3つの部分のようです。クラスの説明、クラスインターフェイス、およびクラスの実装。クラスインターフェイスをインスタンス化するために、Classオブジェクトを使用してオブジェクトをインスタンス化するおなじみの方法は、ランタイムがクラスの説明を使用してクラスオブジェクトをすでにインスタンス化した場合にのみ発生します。
では、すべてのクラス定義は、Classオブジェクトを使用してインスタンス化する機能を提供するために、最初の実行時に静的に割り当てられますか?または、それらが動的に(最初の呼び出しで)割り当てられる場合、どのように?それは実行ループの一部ですか、それともクラスは実際にメッセージを転送する前にすでに割り当てられているかどうかを判断する関数ですか?
python - メタクラス ベースの呼び出し時のエラー: function() 引数 1 は、str ではなくコードである必要があります
今日、threading.Condition をサブクラス化しようとしましたが、うまくいきませんでした。threading.Condition クラスをサブクラス化しようとしたときの Python インタープリターの出力は次のとおりです。
誰かがこのエラーを説明できますか? ありがとう!
python - クラスインスタンスのメタクラスのメソッド
メタクラスで宣言されたメソッドはどうなるのだろうと思っていました。メタクラスでメソッドを宣言すると、最終的にはクラスメソッドになると思いましたが、動作は異なります。例
ただし、メタクラスを定義してメソッドfooを指定しようとすると、インスタンスではなく、クラスでも同じように機能するようです。
ここで何が起こっているのですか?
編集:質問をぶつける
grails - GroovyMetaClass-適切なメタクラスにカテゴリメソッドを追加します
Grailsプラグインで使用するカテゴリがいくつかあります。例えば、
これらのメソッドをメタクラスに追加して、カテゴリクラスを使用する必要がなく、インスタンスメソッドとして呼び出すことができるようにするための最良の方法を探しています。例えば、
これを行うのに役立つGroovy/Grailsクラスまたはメソッドはありますか、それともメソッドを繰り返し処理してすべて自分で追加することに固執していますか?