什么是数据对象可接受的样式python

什么是数据对象可接受的样式python,第1张

概述参见英文答案 > python: list vs tuple, when to use each?                                     7个 python中数据对象的正常样式是什么.假设我有一个方法可以从某个地方(net,DB,….)获取客户应返回的对象类型.我看到几个选择: >一个元组 >一本字典 >一个类实例(数据类’正常’) 我相信还有其他人.做我的第一个 参见英文答案 > python: list vs tuple,when to use each? 7个
python中数据对象的正常样式是什么.假设我有一个方法可以从某个地方(net,DB,….)获取客户应返回的对象类型.我看到几个选择:

>一个元组
>一本字典
>一个类实例(数据类’正常’)

我相信还有其他人.做我的第一个大python项目,所以想开始使用最佳实践

哇 – 对这个问题的负面反应感到惊讶.也许不清楚

我有很多不同的数据项,我想传递给我的代码.用户,产品,客户,订单……(实际上它们不是那样的,但它更简单,有明显类型的东西).所以我有

def get_user():  return x

x应该是什么.一个名为user,dict,一个元组的类的实例……

没有与对象相关的方法,纯数据

看起来像命名元组是要走的路

编辑:作为一种风格如何

class product:   pass...def get_product():   ... db read stuff   pr = product()   pr.name = dbthing[0]   pr.price = dbthing[1]   return pr

是barf诱导或完善的风格或奇怪或什么?有用.从消费者的角度来看,它可以实现可读代码

def xxx():  pr = get_product()  total = amount * pr.price
解决方法 对于简单的数据记录,您通常应首先考虑collections.namedtuple,如果不适合任何原因,请使用其他选项之一.一旦你知道为什么它不适合通常建议使用哪些其他人.您可以将collections.namedtuple视为快速定义不可变“数据类”的快捷方式.

以数据库为例,如果你正在使用ORM,那么即使是最简单的记录也会被表示为对象[*],并且有充分的理由,因为它们都可以共同执行一些可以对它们执行的 *** 作,例如存储更改回到数据库. ORM的教程/文档将指导您.如果您直接使用Python db API,那么SQL查询中的行将(最初)作为元组返回,但是当您拥有它们时,您当然可以使用它们执行您喜欢的 *** 作.此外,数据库连接器可以在调用execute()之前提供 *** 作它们的方法,例如在sqlite3中设置行工厂.

以“网”为例 – 嗯,有许多数据交换方法,但一个常见的例子是访问返回JsON数据的API.在这种情况下,没有太多选择,只能最初在程序中以与JsON结构相同的方式表示此数据:作为包含列表,字典,字符串和数字的列表和字典.再一次,一旦拥有它,你可以用你喜欢的东西做.按原样使用它是相当正常的,将它重新组织成其他东西也是很正常的.个人偏好和特定情况都会影响您实际选择的内容.

您当然应该将所有这些事情都视为可用选项.一般来说,你会使用:

>每个职位都有自己意义的元组.这就是为什么Python通过返回一个元组从函数返回“多个值”的原因,因为不同的东西可能是完全不同的类型,具有不同的含义.
>当可用键因记录而异时的字典.
>每个记录的键相同时的数据类.您可以将namedtuple用于不可变记录.
>当订单很重要但位置都相同时,列表或元组.观察到“元组是不可变的,列表是可变的”与“元组用于异构数据,列表用于同类数据”之间存在一点张力.我个人倾向于前者,但我已经看到后者的合理论据,所以如果你问人们一般如何做出选择,你就不能忽视这一点.

[*]好吧,元组和词典当然也是对象,我指的是除了这些数据结构之外的对象;-)

总结

以上是内存溢出为你收集整理的什么是数据对象可接受的样式python全部内容,希望文章能够帮你解决什么是数据对象可接受的样式python所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1204930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存