问题描述
我确实查看了所有现有的SO问题,并尽我所能地搜索了谷歌,尝试了几种不同的选择,但似乎无法获得我想要的工作。
背景
一个简单的问题-我的代码中有一堆数据类。
我希望将它们全部更改为从dataclasses-jsonschema
JsonSchemaMixin
继承,以便可以以编程方式为所有对象生成模式。
当然,简单的方法是我可以更改代码中的所有实例以从JsonSchemaMixin
混合继承。
但是我当时想我也可以编写自己的装饰器,以a)一次应用@ dataclass,b)mixin dataclasses-schema
。 ...我的想法是减少出错的机会,我可以尝试编写一个类装饰器(我曾经创建并使用过自己的函数装饰器)
# OLD
@dataclass
class X:
....
# Add the mixin `by hand` everywhere
@dataclass
class X(JsonSchemaMixin):
x: int
y: float
# What I want is to make my own decorator to do both:
@dataclass_mixedin
class X:
x: int
y: float
问题
一个非常简单的问题-我无法解决这个问题:(
我尝试过的
尝试编号1:
from dataclasses import dataclass
from dataclasses_jsonschema import JsonSchemaMixin
def dc_schema(cls):
@dataclass
class _decorated(JsonSchemaMixin,cls):
pass
return _decorated
@dc_schema
class Data:
x: int
y: float
a = Data(x=5,y=1.1)
以上操作失败,并带有意外的关键字args x和y。
尝试2:
def dc_schema2(cls):
# Try applying dataclass() directly:
class _decorated(JsonSchemaMixin,cls):
pass
_decorated = dataclass(_decorated)
return _decorated
@dc_schema2
class Data2:
x: int
y: float
d = Data2(x=1,y=1.1)
再次-失败,出现意外参数。
所以我猜想我缺少dataclass
遍历类结构以查找带有注释(https://docs.python.org/3/library/dataclasses.html)的类变量。
但是我不知道该怎么做
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)