他の複数の型を継承するPython C APIを使用して型を作成するにはどうすればよいですか?Python C APIの多重継承
Pythonのドキュメントには、他の1つの型から継承する型の例が含まれていますが、見つけ出すことができる多重継承の例や言及はありません。
他の複数の型を継承するPython C APIを使用して型を作成するにはどうすればよいですか?Python C APIの多重継承
Pythonのドキュメントには、他の1つの型から継承する型の例が含まれていますが、見つけ出すことができる多重継承の例や言及はありません。
C APIは多重継承をサポートしていません。標準のPython class
文をシミュレートして、PyType_Type
に電話する必要があります。
このPyTypeObject * PyTypeObject.tp_base
タイプのプロパティが継承されるベース型 に任意のポインタ:これはspecifying a base type for an extension typeのC APIセクションで説明されています。このレベルでは、単一の 継承しかサポートされません。多重継承では、メタタイプを呼び出すことによって、動的にタイプオブジェクトを作成する必要があります。
このフィールドは(明らかに)サブタイプによって継承されないが、それはデフォルト(Pythonプログラマに タイプ
object
として知られている)&PyBaseObject_Type
に 。
これを行うと、 'tp_methods'をいくつかのC実装を指すように設定することができます。 – tbodt
@tbodt:いいえ、あなたは基本的にC APIの力のどれにもなりません。あなたはPythonでクラスを書くだけでなく、その実装でCの関数に委譲するメソッドを持つこともできます: '' def some_method(self):return some_c_function(self) '' – user2357112
Pythonコードなしでこれを行う方法はありますか? – tbodt
ドキュメントへのリンクを含めて、関連する断片を質問に追加してください。 – Leon