Is there a way to pring a list object in Python?

Z

Zeynel

class Rep(db.Model):
author = db.UserProperty()
replist = db.ListProperty(str)
unique = db.ListProperty(str)
date = db.DateTimeProperty(auto_now_add=True)

.....

Rep().replist = L
Rep().put()
mylist = Rep().all().fetch(10)

I am trying to display mylist; but I am getting the object. Thanks.
 
R

Richard Thomas

class Rep(db.Model):
    author = db.UserProperty()
    replist = db.ListProperty(str)
    unique = db.ListProperty(str)
    date = db.DateTimeProperty(auto_now_add=True)

....

Rep().replist = L
Rep().put()
mylist = Rep().all().fetch(10)

I am trying to display mylist; but I am getting the object. Thanks.

You're using GAE? I suspect the return value of Query.fetch is an
iterator and not a list. You can make it a list by passing it to the
list constructor, like so:

mylist = list(Rep.all().fetch(10))

Richard.
 
D

Dave Angel

class Rep(db.Model):
author = db.UserProperty()
replist = db.ListProperty(str)
unique = db.ListProperty(str)
date = db.DateTimeProperty(auto_now_add=True)

....

Rep().replist = L
Rep().put()
mylist = Rep().all().fetch(10)

I am trying to display mylist; but I am getting the object. Thanks.
I don't know any meaning for "pring."

Care to mention what db is? Presumably it's some other module, not in
the standard library, that you've imported. And presumably it has a
class called Model defined in it.

But the three lines following make no sense to me in isolation, so
unless you know how db.Model is intended to be used, I can't imagine
what you expect here. Rep().replist = L creates a temporary object,
gives it an attribute, and throws them both away. Although I could
write code that would have enough side effects to do something with
that, I can't imagine why I would want to.

Be more explicit with the assumptions (in this case, at least show the
import), and with the results. So instead of saying "I am getting the
object," say

print mylist

produces the output:

sjfdsljdsfds;lkjfdsfds
fdsljfds;ldsj;dslkjfds
dsfjlfkjslkjfd s fj lkjfd


DaveA
 
Z

Zeynel

You're using GAE? I suspect the return value of Query.fetch is an
iterator and not a list. You can make it a list by passing it to the
list constructor, like so:

mylist = list(Rep.all().fetch(10))

Richard.

Yes. I am using GAE, thanks. I tried

mylist = list(Rep().all().fetch(10))

and tried to render it with Mako template

% for i in mylist:
${i}
% endfor

I still get the output:

len(mylist): 2
<__main__.Rep object at 0x03AE6C50>
<__main__.Rep object at 0x03AE6270>

As far as I understand there are two items in mylist and they are Rep
objects. But previously I wrote the list L to datastore:

L = []
s = self.request.get('sentence')
L.append(s)

L = L[0].split('\r\n')

Rep().replist = L
Rep().put()
mylist = list(Rep().all().fetch(10))

so I don't understand why I fetch a list and I get an object. Thanks
for your help.
 
Z

Zeynel

I don't know any meaning for "pring."

Care to mention what db is?  Presumably it's some other module, not in
the standard library, that you've imported.  And presumably it has a
class called Model defined in it.

But the three lines following make no sense to me in isolation, so
unless you know how db.Model is intended to be used, I can't imagine
what you expect here.  Rep().replist = L  creates a temporary object,
gives it an attribute, and throws them both away.  Although I could
write code that would have enough side effects to do something with
that, I can't imagine why I would want to.

Be more explicit with the assumptions (in this case, at least show the
import), and with the results.  So instead of saying "I am getting the
object," say

print mylist

produces the output:

sjfdsljdsfds;lkjfdsfds
fdsljfds;ldsj;dslkjfds
dsfjlfkjslkjfd s fj lkjfd

DaveA

I am using Google App Engine, but it seems that the problem is a
Python problem. I fixed the code a little bit, now I can print the
lists:

Rep().replist = L
Rep().put()
query = Rep.all()
for result in query:
self.response.out.write(result.replist)

The output of this is:

[u'a', u'b'][u'a', u'b'][u'a', u'b']. . .

So, these are the lists in datastore. I want to take one of these
lists and apply list method on it. How do I do that? Thanks.
 
R

Richard Thomas

I don't know any meaning for "pring."
Care to mention what db is?  Presumably it's some other module, not in
the standard library, that you've imported.  And presumably it has a
class called Model defined in it.
But the three lines following make no sense to me in isolation, so
unless you know how db.Model is intended to be used, I can't imagine
what you expect here.  Rep().replist = L  creates a temporary object,
gives it an attribute, and throws them both away.  Although I could
write code that would have enough side effects to do something with
that, I can't imagine why I would want to.
Be more explicit with the assumptions (in this case, at least show the
import), and with the results.  So instead of saying "I am getting the
object," say
print mylist
produces the output:
sjfdsljdsfds;lkjfdsfds
fdsljfds;ldsj;dslkjfds
dsfjlfkjslkjfd s fj lkjfd

I am using Google App Engine, but it seems that the problem is a
Python problem. I fixed the code a little bit, now I can print the
lists:

        Rep().replist = L
        Rep().put()
        query = Rep.all()
        for result in query:
            self.response.out.write(result.replist)

The output of this is:

[u'a', u'b'][u'a', u'b'][u'a', u'b']. . .

So, these are the lists in datastore. I want to take one of these
lists and apply list method on it. How do I do that? Thanks.

Okay that <Rep object at 0x....> is the representation of the object.
If you want to control how an object is represented when you put it in
a template you should define a __str__ method:

class Rep(db.model):
# Properties
...
# Representation
def __str__(self):
return "\n".join(self.replist)

Or however you want to object to appear. It may help to do a few
experiments outside GAE in the interactive interpreter.

Richard.
 
B

Benjamin Kaplan

       Rep().replist = L
       Rep().put()
       query = Rep.all()
       for result in query:
           self.response.out.write(result.replist)

The output of this is:

[u'a', u'b'][u'a', u'b'][u'a', u'b']. . .

So, these are the lists in datastore. I want to take one of these
lists and apply list method on it. How do I do that? Thanks.
--

Quite simple. You can apply a list method to a list object by actually
getting the list object. You can't call a list method on a query
object or a Rep object.

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

So once you have that last step, you have a list. Which you can
manipulate like any other Python list.
Once you have the list, you can call all them
 
Z

Zeynel

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

Thanks! This was very helpful.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top