我有两个类,CustomAPIView和ContestMessageAPI,其中ContestMessageAPI继承自CustomAPIView。具体结构如下(忽略不相关的方法):
class CustomAPIView(APIView):
"""
Custom APIView
"""
authentication_classes = (JSONWebTokenAuthentication,)
class ContestMessageAPI(CustomAPIView):
"""
Pass in the contest_id to get the corresponding match information
"""
现在,我正在修改ContestMessageAPI类中的参数,以便可以实现功能。
class ContestMessageAPI(CustomAPIView):
"""
Pass in the contest_id to get the corresponding match information
"""
parameter = {'contest_id': 'Field description'}
schema = AutoSchema(manual_fields=[
coreapi.Field(name=k, required=True, location="form",
schema=coreschema.String(description=v)) for k, v in parameter.items()
])
由于分配给架构代码的片段是固定的,因此我想将此代码移植到其父类CustomAPIView,并且CustomAPIView变为
class CustomAPIView(APIView):
"""
自定义的APIView
"""
authentication_classes = (JSONWebTokenAuthentication,)
parameter = {'contest_id':'字段描述'}
schema = AutoSchema(manual_fields=[
coreapi.Field(name=k, required=True, location="form",
schema=coreschema.String(description=v)) for k, v in parameter.items()
])
然后,我想在ContestMessageAPI中配置参数变量以实现修改其父类的架构,但是发现失败。查询数据后,原因可能是:加载成员变量的规则是先加载父类的成员变量,然后再加载该类的成员变量,这导致该类的配置无效;因为先执行父类的成员变量。在CustomAPIView的每个子类中进行单独配置可以解决该问题,但这将在每个子类中编写重复的代码,这是非常面向对象的。有什么办法可以解决这个问题?