我是python的新手,并且来自Java背景。
我正在开发一个sdk,该sdk在内部调用一些剩余端点,并且我们公开了客户端和方法。我已经用Java完成了sdk。现在我在python中做同样的事情。我不手动编写代码。我使用swagger-code-gen。所以我在模型结构上没有太多灵活性。对于扩展其他模型列表的模型,生成的代码具有编译错误。因此,我正在尝试解决这些特殊情况。
在Java中,我们有代码:
public class Errors extends ArrayList<ErrorsInner> {
//---
}
在python中,我想重新生成相同的代码。我尝试了以下选项。但似乎没有任何正常工作。 :
类错误(列表):
这不是适当的解决方案,因为错误也应正确包含ErrorsInner的参数。因此,在反序列化之后,我可以在此模型中找到属性。
通过输入导入列表
类错误(列表[ErrorsInner]):
我应该创建“错误”模型,以使其易于反序列化和序列化。
python中有哪些替代方法?
答案 0 :(得分:1)
您应该进行两节课:
class MyError(Error):
def magic_func(): pass
class MyErrorList(list, ErrorsInner):
def my_func(): pass
l = MyErrorList(MyError(), MyError(), MyError())
l.my_func()
l.append(MyError())
for e in l:
e.magic_func();
Python本身并不能阻止您执行l.append("I am stupid")
,但是您可以使用isinstance(e, MyError)
进行检查。
Python可以“扩展”多个类。
答案 1 :(得分:0)
您能否详细说明为什么第一个示例不起作用?您可以这样做:
class Errors(list):
pass
然后在代码中:
In [2]: errors = Errors()
In [3]: errors.append('wtf')
In [4]: errors
Out[4]: ['wtf']
In [5]: errors.pop()
Out[5]: 'wtf'
以上,Errors
将从list
类型扩展。