Python:在信号中传递两个以上的参数

Python:在信号中传递两个以上的参数,python,signals,Python,Signals,我知道当我使用信号时有两个参数(signum和frame) 但如果我想多送些呢?例如:自我对象 我怎么做 例如: def terminate_handler(signum, frame, self): self.close() signal.signal(signal.SIGINT, terminate_handler, object) 编辑:我在飞行中找到了解决方案,当我认为它不起作用时,实际上起了作用。我不知道它会起作用 def terminate_handler(self, si

我知道当我使用信号时有两个参数(signum和frame)

但如果我想多送些呢?例如:自我对象

我怎么做

例如:

def terminate_handler(signum, frame, self):
    self.close()
signal.signal(signal.SIGINT, terminate_handler, object)
编辑:我在飞行中找到了解决方案,当我认为它不起作用时,实际上起了作用。我不知道它会起作用

def terminate_handler(self, signum, frame):
        self.close()
signal.signal(signal.SIGINT, terminate_handler, object)
为什么不呢

def terminate_handler(self, signum, frame):
    self.close()
signal.signal(signal.SIGINT, partial(terminate_handler, obj))
下面是一个完整的工作示例(kill-2…)


是的,因为他们写错了方法。实际上这是第一个论点。这是您在python中开始使用OOP时学到的第一件事。我尝试使用您所做的,但我得到了下一个错误terminate_handler()正好接受3个参数(给定4个),伙计,您编写的方法是错误的。实际上这是第一个论点。这是在python中开始使用OOP时学到的第一件事。
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)