gpt4 book ai didi

python - 如果我从函数发送 python 'Signal' 对象, "sender"参数应该是什么?

转载 作者:IT老高 更新时间:2023-10-28 21:04:20 25 4
gpt4 key购买 nike

如果我从模块函数(发生时的 django View 函数)发送信号,它不在类中,那么(对我来说)发送者应该是什么并不明显 - 如果有的话? sender=None 在这种情况下是否合适?

或者,该函数由 HTTP 请求调用,我目前将其作为单独的参数传入 - 我应该改为传递它吗?

选项 A:

from django.dispatch import Signal
my_signal = Signal(
providing_args=['my_arg', 'request']
)

# this is a view function
def do_something(request):
# ... do useful stuff
my_signal.send(
sender=None,
my_arg="Hello",
request=request
)

选项 B:

from django.dispatch import Signal
my_signal = Signal(
providing_args=['my_arg']
)

# this is a view function
def do_something(request):
# ... do useful stuff
my_signal.send(
sender=request,
my_arg="Hello",
)

[更新]

选项 A 有。在这种情况下,接收方对发送方没有任何用处(即它不是对象),因此请将其设置为 None。

最佳答案

django.dispatch.Dispatcher source只是说应该是

"...[t]he sender of the signal. Either a specific object or None."

然后通过 connect() 与接收者联系。 ,发件人的意义是:

"The sender to which the receiver should respond. Must either be
of type Signal, or None to receive events from any sender"

我承认,这不是特别清楚,但在你的情况下,我会说使用 sender=None因为没有什么具体的东西可以 Hook ,因为请求是 transient 的。

关于python - 如果我从函数发送 python 'Signal' 对象, "sender"参数应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17043163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com