这是我另一个question的后续。在
我以为
mylist = list(Rep().all().fetch(50))
使mylist
成为一个列表。但当我想知道它的长度时,我得到了信息
谁能解释一下我做错了什么吗?在
Rep().replist = L
Rep().put()
mylist = list(Rep().all().fetch(50))
P = mylist.pop()
self.response.out.write(len(P))
更新
作为可能遇到同样问题的其他人的参考;我发布了下表,这对我很有帮助。(原here)
Rep().........................Rep object
Rep.all().....................Query object
list(Rep.all())...............List of Rep objects.
list(Rep.all())[0]............A single Rep object
list(Rep.all())[0].replist....A list
谢谢你的回答。在
而不是这样:
试试这样的方法:
^{pr2}$你的代码:
正在创建
Rep
实例,然后将其replist
分配给L
。然后创建另一个Rep
,并对其调用put()
。因此,您要写入数据存储的是一个空白Rep
-它没有您的列表。在在本规范中:
您正在对
Rep
的实例调用all()
,而应该直接在类上调用它。另外,您不需要将结果包装在list()
中,因为fetch()
已经返回了一个列表。在然后在下面找到这个:
您正在尝试获取
P
(它是Rep
)的长度,而不是P
replist
的长度。在更新:
针对第一条评论:
在本规范中:
Rep()
正在创建Rep
的实例。然后,r =
将该实例分配给名称r
。所以现在名称r
指的是Rep
的实例。在那么在这个代码中:
它正在分配
r
的replist属性来引用列表L
。在您是对的,您可以这样做,而不是这两行:
它的作用是将
L
传递给Rep
的__init__
函数,参数名为replist
。Rep
的__init__
函数是从db.Model
基类继承的。此函数用于将提供给模型上同名属性的任何参数的值赋值。因此在本例中,它将L
分配给replist
属性。所以它的效果和原来的两行代码是一样的,但是工作方式有点不同。在针对第二条评论:
Python中的=运算符表示赋值,这与数学等价不同。在
所以这个代码:
并不意味着}来表示相同的事情。在
r
现在等同于Rep()
,并且现在可以使用r
和{它的意思是所做的是分配一个
r
现在等于Rep()
的结果。^{Rep
的新实例。因此,r
是对新的Rep
的引用。{{cd15>以后不需要调用一个新的实例。在如果要打印replist属性的元素数。在
希望我能帮你:p
试试这个:
相关问题 更多 >
编程相关推荐