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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)