SWIGを介してPythonに公開したC++がいくつかあります。には、単一の純粋仮想関数を持つ基本クラスがあります。
Pythonでは、モジュールをインポートし、抽象クラスをベースとして使用するクラスを定義します。
import mymodule
class Foo(mymodule.mybase):
...
そのモジュールはマネージャークラスでもあるので、新しく定義したクラスをマネージャーに追加したいと思います。
m = mymodule.mymanager()
m.add(Foo())
追加の定義:
void add(mybase* b) { ... }
期待どおりに機能しませんでした:
TypeError: in method 'mymanager_add', argument 2 of type 'mymodule::mybase *'
私は何を取りこぼしたか?私のFooクラスが「mybase」であるかどうかはわかりません。Pythonで基本クラスのコンストラクターへの呼び出しを追加しようとしましたが、それは機能しませんでした。クラスは抽象であると言いました。
def __init__(self):
mymodule.mybase.__init__(self)