0
我試圖重寫DaemonRunner Python標準守護進程庫(在這裏https://pypi.python.org/pypi/python-daemon/找到)覆蓋靜態成員在DaemonRunner
的DaemonRunner響應命令行參數啓動,停止和重新啓動,但我想爲狀態添加第四個選項。
我想覆蓋類看起來是這樣的:
class DaemonRunner(object):
def _start(self):
...etc
action_funcs = {'start': _start}
我試圖重寫它是這樣的:
class StatusDaemonRunner(DaemonRunner):
def _status(self):
...
DaemonRunner.action_funcs['status'] = _status
此作品在一定程度上,但問題是, DaemonRunner的每個實例現在都有新的行爲。是否可以在不修改每個DaemonRunner實例的情況下覆蓋它?
感謝您的回答。但是,它不起作用,因爲__init __()中未定義_status。 self._status也無法按預期工作,因爲它將通過DaemonRunner :: do_action顯式傳遞來調用。可以做'self.action_funcs ['狀態'] = self._status'和'def _status(self,self_parent)',但這似乎很討厭.. – 2014-12-03 11:36:07
你是對的,我沒有嘗試代碼。請看看編輯過的答案。基本上,我現在在修改action_functs之後調用基類構造函數。另外,我指定方法_status的靜態引用。 – simonemainardi 2014-12-03 13:38:57
靜態引用做了竅門,謝謝! – 2014-12-03 13:59:15