【问题标题】:What is the point of storing values in a sequence of instances?在一系列实例中存储值有什么意义?
【发布时间】:2016-06-05 12:42:04
【问题描述】:

A Python wrapper around the Twitter API. 的 python (https://github.com/bear/python-twitter/blob/master/twitter/api.py) 的 Twitter API 层实现返回一个实例序列,即作为

的返回
status=api.GetHomeTimeline().

在内部,我理解它将一个 json 字典列表转换为该序列。

我不得不摆弄一下以找出如何读出所有值。

有一堆类可以直接读出,即:

status[0].user.listed_count

打印值。但是对于

下的值
status[0].user_mentions 

三个变量:值对存储为一个列表。

为什么要那样做?这是一种常见的编程技术吗?到目前为止,我一直在处理嵌套的 json 字典/列表,这更容易理解,因为可以迭代所有内容。

【问题讨论】:

  • 如果你不想要包装器,就不要使用包装器!如果您对 JSON 更满意,那很好。
  • 不!我不是在批评它!我偶然发现了这种技术,但我从来没有读过它,所以我想知道:嘿,那是什么,有没有关于它的范式或什么东西,我可以在哪里学习它。这样做肯定有一些特殊的好处,因为 - 在我的理解中 - api 层首先具有 json 格式的数据,然后将其转换为实例。
  • 这就是 API 包装器的工作方式,它们抽象出传输层,让您处理结果的本地表示;在这种情况下,为用户、推文等公开 Python 对象。
  • 是的,但是我们在 python 中有字典和列表。类的实例是另一种存储数据的 Python 方式吗?
  • 请参考。也是我的回答,但简而言之:从一种宿主语言交叉的字典,例如。在服务器端,因为 JSON 在传输到另一种宿主语言(如客户端的 Python)时可能很难解析和存储,因为它们出现在网络上的键序列可能在不同的宿主语言存储结构中发生不同的变化。深度嵌套意味着您必须最终消化更多字节,直到您处于兴趣点为止。展平子树可能会有所帮助。所以也许包装器的用户只是喜欢这种方式......

标签: python class twitter flatten


【解决方案1】:

这种情况下的最终答案只能由该实现的作者给出。

一般来说,深度嵌套的信息会为该信息实例的生产者带来通用解决方案,但会给消费者(尤其是通用消费者)带来更大的压力,使其按原意理清问题。

这里有一个 python API 实现扁平化了一些东西,所以你可以迭代它们或如the API wrapper documentation 本身所记录的那样。你可以很容易地找出——就像你可能做的那样,当我正确地遵循你的问题时——哪个 JSON 对象被展平以及在哪个位置放置了什么,并且当根据请求将特定参数设置为 false 时,你可以完全跳过这些事情.

在我的日常工作中,我经常会遇到一些概念,这些概念暗示着深度嵌套的树以获取信息,并且在大多数情况下,架构师和用户的反馈都会导致这些结构扁平化,以达到通用性和准备好之间的平衡。未来扩展作为一种极端实用性、性能和低成本的市场渗透率。

我希望这是回答您的问题的正确级别。如果不是这样,请随时发表评论询问。

【讨论】:

    猜你喜欢
    • 2013-12-23
    • 1970-01-01
    • 2010-09-29
    • 2017-02-20
    • 2023-03-09
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    相关资源
    最近更新 更多