我試圖提供允許人們編寫自己的插件的框架。這些插件基本上是派生類。我的基類需要一些變量來初始化,我怎樣才能初始化我的基類,而不必讓我的派生類在基類初始化中提供變量?初始化變量不是來自派生類的基類
#!/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類的配置參數,因爲這是我不希望誰寫與困擾插件用戶。
我不明白你的問題。我在實例化UserPlugin時得到的結果是,你不希望插件創建者必須傳遞一個配置路徑,但是你希望你的配置路徑來自哪裏?那麼你想要一個默認的配置路徑?初始化你的基類只會在你實例化你的基類時發生,當你實例化一個'UserPlugin'時,你_call_'BaseClass .__ init __()',但你正在初始化一個'UserPlugin'實例 – senderle 2012-03-19 23:58:02
感謝你的改寫我的問題,因爲這就是它。我明白,啓動UserPlugin時啓動BaseClass 。底線是,我想要一個乾淨的方式讓UserPlugin從BaseClass繼承方法,它需要一個變量來啓動而不將該變量傳遞給派生類。 我想也可能是忘記繼承並首先啓動基類,然後啓動BaseClass中的UserPlugin,但我覺得有點難看。 – 2012-03-20 09:39:33
但你仍然沒有回答我的問題。你想從哪裏得到配置路徑?儘管如此,我採取了瘋狂的猜測(http://stackoverflow.com/a/9786902/577088)。 – senderle 2012-03-20 12:39:57