Python 创建类对象列表
我正在尝试创建python类对象的列表 基本上,我希望清单如下:Python 创建类对象列表,python,list,class,object,Python,List,Class,Object,我正在尝试创建python类对象的列表 基本上,我希望清单如下: [<Report {u'invoice_id': u'demo-1-2016-dummy', u'tenant_id': u'27724b57e3b744f89cbf1336da062b43'}>, <Report {u'invoice_id': u'demo-2-2016', u'tenant_id': u'27724b57e3b744f89cbf1336da062b43'}>, <Report {
[<Report {u'invoice_id': u'demo-1-2016-dummy', u'tenant_id': u'27724b57e3b744f89cbf1336da062b43'}>, <Report {u'invoice_id': u'demo-2-2016', u'tenant_id': u'27724b57e3b744f89cbf1336da062b43'}>, <Report {u'invoice_id': u'admin-2-2016', u'tenant_id': u'6cd02afa3f0f403489153c41e98d07bc'}>]
[{u'invoice_id': u'demo-1-2016-dummy', u'tenant_id': u'27724b57e3b744f89cbf1336da062b43'}, {u'invoice_id': u'demo-2-2016', u'tenant_id': u'27724b57e3b744f89cbf1336da062b43'}, {u'invoice_id': u'admin-2-2016', u'tenant_id': u'6cd02afa3f0f403489153c41e98d07bc'}]
我知道我错过了一些东西
由于我是python的新手,我无法找到我的错误所在
谁能帮我得到我期望的结果。TL;博士:
return [self.resource_class(self, j, loaded=True)
for j in self.client.get(url).json() if j]
您不必自己处理URL创建。如果您使用提供的方法,那么
CrudManager
应该为您处理这些问题
试一试
其中my_report\u id
是一个包含id的变量,如果您试图获取单个报表,而不是
report_manager.client.get(url).json()
查看self.client.get(url).json()
是它在内部执行的操作,然后将json
反序列化为self.resource\u类
实例。你可能不应该直接这么做
cloudkittyclient.common.base.CrudManager
在内部使用\u get
并提供一个覆盖,该覆盖将为您处理base\u url
链接等
此外,由于您有类似于list\u invoice
的方法,因此您似乎应该使用or
report_manager.findAll()
或
其中,all_tenants
是一个变量,其中包含您将传递给自定义list_invoice
方法的内容
最后,如果findAll
或CrudManager.list
确实不适合您的需要,这似乎是因为您的集合url与类中的url不同,那么您必须自己反序列化self.client.get(url.json()
的结果。因此,与其退回,不如这样做
return [self.resource_class(self, j, loaded=True)
for j in self.client.get(url).json() if j]
它从pythondict
中创建self.resource\u class
类(ReportResult
此处)的实例列表,这些实例已从JSON
数据的响应中反序列化
考虑重载
CrudManager
的列表
方法,因为这似乎是实现此操作的方法。请停止使用repr
字符串作为序列化return self.client.get(url.json()
正在返回:python的列表
,然后可以序列化为json进行传输。我几乎不需要具有相同类对象的列表。这就是我试图实现的目标。可能的重复,然后不要调用.json()
?[,…]
仍然只是报表
实例列表的一个有用的调试输出。您似乎把它与其他东西混淆了。这个问题似乎是关于库中的一些深层内部内容,而不是一般的Python类,但它没有指示库是什么的标记(还有一些非常无用的广泛标记,如object
和class
)。我强烈建议去掉常规标记并添加更具体的内容(我不知道什么是cloudkitty
,或者我会自己编辑标记)。谢谢,但它给出了一个错误:TypeError:get()只接受1个参数(2个给定参数)啊,是的,get()
只接受kwargs。它接受诸如base\u url
,'%s\u id'%self.key
->report\u id
等内容。@iamnewuser请尝试使用ReportManager实例的findAll
方法。这一个:在self.client.get(url.json()中为j返回[self.resource\u类(self,j,loaded=True)]如果你不介意的话,你能确切地解释一下这里发生了什么事吗。?
report_manager.findAll()
report_manager.findAll(all_tenants=all_tenants)
return [self.resource_class(self, j, loaded=True)
for j in self.client.get(url).json() if j]