2016-11-14 11 views
2

他の複数の型を継承するPython C APIを使用して型を作成するにはどうすればよいですか?Python C APIの多重継承

Pythonのドキュメントには、他の1つの型から継承する型の例が含まれていますが、見つけ出すことができる多重継承の例や言及はありません。

+0

ドキュメントへのリンクを含めて、関連する断片を質問に追加してください。 – Leon

答えて

0

C APIは多重継承をサポートしていません。標準のPython class文をシミュレートして、PyType_Typeに電話する必要があります。

このPyTypeObject * PyTypeObject.tp_base

タイプのプロパティが継承されるベース型 に任意のポインタ:これはspecifying a base type for an extension typeのC APIセクションで説明されています。このレベルでは、単一の 継承しかサポートされません。多重継承では、メタタイプを呼び出すことによって、動的にタイプオブジェクトを作成する必要があります。

このフィールドは(明らかに)サブタイプによって継承されないが、それはデフォルト(Pythonプログラマに タイプobjectとして知られている)&PyBaseObject_Typeに 。

+0

これを行うと、 'tp_methods'をいくつかのC実装を指すように設定することができます。 – tbodt

+0

@tbodt:いいえ、あなたは基本的にC APIの力のどれにもなりません。あなたはPythonでクラスを書くだけでなく、その実装でCの関数に委譲するメソッドを持つこともできます: '' def some_method(self):return some_c_function(self) '' – user2357112

+0

Pythonコードなしでこれを行う方法はありますか? – tbodt