Pythonメタクラスに関する難解な質問があります。クライアント側のプロキシを介して任意のPythonクラスに簡単にアクセスできるようにするWebサーバー側のコード用のPythonパッケージを作成しています。プロキシ生成コードには、APIに含めたいすべてのPythonクラスのカタログが必要です。このカタログを作成するために、__metaclass__
特別な属性を使用して、クラス作成プロセスにフックを設定しています。具体的には、「公開された」APIのすべてのクラスは、クラスの作成に関する情報を記録するように設定された特定の基本クラスをサブクラスPythonDirectPublic
化します。__metaclass__
ここまでは順調ですね。複雑になるのは、自分PythonDirectPublic
自身をサードパーティのクラス()から継承させたいということですenthought.traits.api.HasTraits
。このサードパーティクラスもを使用し__metaclass__
ます。
では、2つのメタクラスを管理する正しい方法は何ですか?私のメタクラスはEnthoughtのメタクラスのサブクラスである必要がありますか?または、メタクラスのメソッド内でEnthoughtのメタクラスを呼び出して、__new__
返される型オブジェクトを取得する必要がありますか?または、この特定の状況で使用する他の神秘的な呪文はありますか?