升级Graphene至3.0.0后ObjectType初始化异常问题
Graphene v3.0.0中ObjectType实例化报错的解决方法
Graphene v3.0.0通过PR #1157移除了ObjectType的默认__init__方法,不再支持直接通过关键字参数初始化实例,这就是你遇到"unexpected arguments"警告的原因。以下是两种可行的解决方式:
方法一:使用官方推荐的from_dict方法
这是Graphene v3官方推荐的实例化方式,通过字典传递字段值:
from graphene import ObjectType, Int class TestObjectType(ObjectType): field1 = Int() field2 = Int() # 用from_dict初始化实例 test_instance = TestObjectType.from_dict({"field1": 1, "field2": 2})
方法二:自定义__init__方法兼容旧代码
如果需要保持v2版本的初始化风格,可以手动为ObjectType子类添加__init__方法:
from graphene import ObjectType, Int class TestObjectType(ObjectType): field1 = Int() field2 = Int() def __init__(self, field1=None, field2=None, **kwargs): super().__init__(**kwargs) self.field1 = field1 self.field2 = field2 # 继续使用原有方式初始化 test_instance = TestObjectType(field1=1, field2=2)
额外说明
如果你是结合Django使用(比如DjangoObjectType),请确保安装的graphene-django版本与Graphene v3兼容(要求graphene-django>=3.0.0),上述两种方法同样适用。
内容的提问来源于stack exchange,提问作者Gagan
相关产品推荐
相关产品推荐

