区分 class 和 Python 类型提示中的对象
Differentiate class and object in Python type hints
Django's post_save
signal 发送一个模型 class 参数 – sender
– 连同被保存的实际实例 – instance
.
有没有办法在类型提示中区分两者?
例子
我们有一个模型 User
并且想要创建一个 post_save
信号:
# …
@receiver([post_save], sender=User)
def send_activation_email(
sender: User,
instance: User,
# …
) -> None:
# …
如您所见,我给了 sender
和 instance
相同的类型提示 – User
。但它们不是同一类型。第一个是 class,第二个是对象。那么,有没有办法区分这两者呢?
您要找的是typing.Type
。
from typing import Type
# …
@receiver([post_save], sender=User)
def send_activation_email(
sender: Type[User],
instance: User,
# …
) -> None:
# …
感谢 @Michael0x2a 的评论,为了清晰和可读性而发布此答案。
Django's post_save
signal 发送一个模型 class 参数 – sender
– 连同被保存的实际实例 – instance
.
有没有办法在类型提示中区分两者?
例子
我们有一个模型 User
并且想要创建一个 post_save
信号:
# …
@receiver([post_save], sender=User)
def send_activation_email(
sender: User,
instance: User,
# …
) -> None:
# …
如您所见,我给了 sender
和 instance
相同的类型提示 – User
。但它们不是同一类型。第一个是 class,第二个是对象。那么,有没有办法区分这两者呢?
您要找的是typing.Type
。
from typing import Type
# …
@receiver([post_save], sender=User)
def send_activation_email(
sender: Type[User],
instance: User,
# …
) -> None:
# …
感谢 @Michael0x2a 的评论,为了清晰和可读性而发布此答案。