私は人々が自分のプラグインを書くことを可能にするフレームワークを提供しようとしています。これらのプラグインは基本的に派生クラスです。私の基本クラスは初期化するためにいくつかの変数を必要とします、私はどのように私の派生クラスが基本クラスの初期化で変数をフィードすることなく、私の基本クラスを初期化できますか?これは私が気にするプラグインを書き込み、ユーザーを望んでいないものですので、派生クラスから来ない変数で基底クラスを初期化する
#!/bin/python
class BaseClass():
def __init__(self,config):
self.config=config
def showConfig(self):
print "I am using %s" % self.config
class UserPlugin(BaseClass):
def __init__(self,config):
BaseClass.__init__(self,config)
def doSomething(self):
print "Something"
fubar = UserPlugin('/tmp/config.cfg')
fubar.showConfig()
私の目標は、UserPluginクラスのconfigパラメータを定義する必要性を回避するためです。
私はあなたの質問を理解していません。 'UserPlugin'がインスタンス化されると、プラグインの作成者に設定パスを渡させたくないのですが、どこから設定パスを取得したいのですか?デフォルトの設定パスを持っていますか?あなたが 'UserPlugin'をインスタンス化すると' BaseClass .__ init __() 'が呼び出されますが、' UserPlugin'インスタンスは初期化されています。 – senderle
リファラリングのおかげでそれはまさにそれだから私の質問。私はBaseClassがUserPluginの起動時に開始されることを理解する。要するに、私は、UserPluginが派生クラスにその変数を渡さずに変数を初期化する必要のある、BaseClassからメソッドを継承するためのきれいな方法を欲しいということです。 継承を忘れて、ベースクラスを最初に開始してから、BaseClass内でUserPluginを開始することも可能ですが、少し醜いことがわかります。 –
しかし、あなたはまだ私の質問に答えなかった。どこから設定パスを取得しますか? [私は野生の推測を取った](http://stackoverflow.com/a/9786902/577088)、しかし。 – senderle