0
から派生クラスを作成します。私はプライベートコンストラクタと工場を持つクラスを持っているC++ライブラリではブースト-pythonのラップ工場
class MyServer {
MyServer() {..};
public:
MyServer create(std::string &config);
};
ブースト-pythonので、私は私がこのファクトリを使用することができますラッパーを作成:
from MyWrappedLibrary import MyServer, StartServer
server = MyServer.create('some: magic, config: string')
StartServer(server)
今、私はこのようなMYSERVERするメソッドを追加したい:
from MyWrappedLibrary import MyServer, StartServer
class MyEnhancedServer(MyServer):
def __init__(self, config):
super().__init__(config)
def another_method(self):
do(something)
しかし、もちろんtの私はMyServer
を直接インスタンス化できないので、彼は働かない。もちろん
私はMyServer
から派生しないクラスを作成することもできますが、私はすべてのメソッドラップしなければならなかったので、それは良い感じではないでしょう:
class MyEnhancedServer:
def __init__(self, config):
self.core_instance = MyServer.create(config)
def foo_1(self): # wrapper
self.core_instance.foo_1()
def foo_2(self): # wrapper
return self.core_instance.foo_2()
def another_method(self):
do(something)
server = MyEnhancedServer('some: magic, config: string')
StartServer(server.core_instance)
質問:を作るための方法がありますMyServer.create()
の結果、MyEnhancedServerの「ベースインスタンス」ですか?
結果はこのようなものになるだろう:
class MyEnhancedServer(MyServer):
def __init__(self, config):
self.MyServer = MyServer.create()
def another_method(self):
do(something)