代码工作正常,但似乎这条线很难看。
self.data["data"]["someComponent"]["items"][1]["content"]["items"].append(json.load(someVariable))
所以我的问题是: 这适合Python约定的代码吗? flake8、pylint 等没有显示问题。 也许您对重构有一些新的想法?
最佳答案
这对于小型程序或原型(prototype)来说很好,但对于大型和复杂的项目来说却很糟糕。
如果行很长,您可以使用 \
移动到下一行(但 flake8 会发出有关 [
之前的空格的警告):
self.data \
["data"] \
["someComponent"] \
["items"] \
[1] \
["content"] \
["items"].append(json.load(someVariable))
在严肃的项目中,您应该使用其他数据结构。比如不同类的对象组合起来,就形成了你需要的树。
为字典结构中的每个实体创建一个类。例如,Data
类,其中包含字段 someComponent
和 someOtherComponent
。创建类 Component
,其中包含字段 items
作为列表或使 Component
可迭代(定义方法 __iter__()
并可选方法__getitem__(index)
)。等等。并访问其字段:
self.data.someComponent[1].content.append(myNewContentElement)
要从 json 获取 myNewContentElement
,您可以创建一个函数,该函数接受加载的 JSON 结构并为您返回 ContentElement
对象。
关于python - 长字典属性行的重构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48990825/