Django模型中正确使用Python类型提示的方式是什么?
哪种是Django模型中使用类型注解的正确方式?
正确答案是选项三,以下是对三个选项的分析:
选项一:错误。
Generic[_T]是用于定义泛型类的工具,不能用来标注函数参数的实例类型。这里函数需要接收User模型的实例,用Generic[_T]完全不符合类型注解的用途,且此处也无需用TypeVar定义泛型。选项二:错误。
Type(User)表示的是User类本身的类型,而非User类的实例。函数内代码是操作实例的name属性并调用实例方法save(),如果传入User类而非实例,运行时会直接报错(类没有name属性,save()是实例方法)。选项三:正确。直接用
User作为参数的类型注解,准确表明参数是User模型的实例,函数内对实例属性和方法的操作完全匹配该类型,符合Django模型实例的类型注解规范。
from app.models import User def func(user: User): user.name = 'John' user.save()
内容的提问来源于stack exchange,提问作者scaryhamid
相关产品推荐
相关产品推荐

