在 Python 类型提示中区分类和对象



Django 的post_save信号发送一个模型类参数 –sender– 以及正在保存的实际实例 –instance

有没有办法在类型提示中区分两者?

我们有一个模型User,并希望创建一个post_save信号:

# …
@receiver([post_save], sender=User)
def send_activation_email(
sender: User, 
instance: User, 
# …
) -> None:
# …

如您所见,我已经给出了senderinstance相同类型的提示 -User。但它们不是同一类型。第一个是类,第二个是对象。那么,有没有办法区分两者呢?

您要查找的是typing.Type

from typing import Type
# …
@receiver([post_save], sender=User)
def send_activation_email(
sender: Type[User], 
instance: User, 
# …
) -> None:
# …

由于@Michael0x2a的评论,发布了此答案以使其清晰易读。

最新更新