2016-12-07 14 views
0

我知道當我使用信號時有兩個參數(符號和幀)。Python:在信號中傳遞兩個以上的參數

但是如果我想發更多?例如:對象爲自我。

我該怎麼辦?

例如:

def terminate_handler(signum, frame, self): 
    self.close() 
signal.signal(signal.SIGINT, terminate_handler, object) 

編輯:我發現我在飛行中又寫道解決方案,當我認爲這是行不通的,actualy工作。我不知道它會工作

def terminate_handler(self, signum, frame): 
     self.close() 
signal.signal(signal.SIGINT, terminate_handler, object) 
+0

男人,你寫的方法錯誤。其實這是第一個說法。當你開始在python中使用OOP時,這是你學到的第一件事。 –

回答

2

爲什麼不

def terminate_handler(self, signum, frame): 
    self.close() 
signal.signal(signal.SIGINT, partial(terminate_handler, obj)) 

下面是一個完全工作示例(殺-2 ...)

import signal, os, sys 
from functools import partial 
from time import sleep 
def terminate_handler(self, signum, frame): 
    print('terminate_handler:', self, signum) 
    sys.exit(0) 
signal.signal(signal.SIGINT, partial(terminate_handler, 'foo')) 
while True: 
    sleep(1) 
+0

是的,因爲他們寫錯了方法。其實這是第一個說法。當你開始在python中使用OOP時,這是你學到的第一件事。 –

+0

我試過使用你所做的,但我得到下一個錯誤terminate_handler()只需要3個參數(4給出) –

+1

這是一個完整的工作示例 – Gribouillis