Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建类对象列表_Python_List_Class_Object - Fatal编程技术网

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 {

我正在尝试创建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 {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]
它从python
dict
中创建
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]