class User:
 >      """user object
 >      """
 >
 >      def __init__(self, id):
 >          self._id = id
 >          self._user=db.query('select * from users where
 > id=$id',vars=locals())
 >          if not self._user:

        for k in self.user.keys():
            setattr(self,k,self.user[k])


is there a better way to do this?

Yoan Blanc wrote:
What you wanna do isn't a dict but that:
http://docs.python.org/ref/attribute-access.html

-- Yoan

On Wed, May 14, 2008 at 9:47 AM, Yoan Blanc <[EMAIL PROTECTED]> wrote:
  
http://www.diveintopython.org/object_oriented_framework/special_class_methods.html

 or be naughty:

 class User(dict):
   ...



 On Wed, May 14, 2008 at 9:42 AM, Paul Jobs <[EMAIL PROTECTED]> wrote:
 >
 >  im trying to create a class user
 >  so that
 >
 >  i can do
 >
 >  r=User(1)
 >
 >
 >  r._user.keys()
 >  ['rating', 'last_name', 'pageviews', 'ip', 'number_polls', 'site',
 > 'myrand', 'hotmail', 'number_activities', 'skype', 'id', 'city',
 > 'rawpassword', 'number_useraudios', 'zip', 'number_votes', 'last_login',
 > 'number_userpics', 'music', 'email', 'number_pages', 'username',
 > 'number_posts', 'hash', 'number_comments', 'number_pictures', 'first_name',
 > 'yahoo', 'groups', 'heroes', 'favoritestuff', 'number_usermessages_sent',
 > 'vanity', 'interests', 'television', 'number_uservideos', 'created', 'dob',
 > 'gender', 'number_friends', 'liketomeet', 'htmlcodes', 'aim', 'movies',
 > 'password', 'books', 'profilepic', 'number_usermessages', 'email_subscribe',
 > 'number_communities']
 >
 >  so i want this to become
 >
 >  r.rating
 >  r.last_name
 >  r.pageviews and so on
 >  r.username
 >  r.photos()
 >  and so on
 >
 >  but
 >
 >  i want to set the keys of the user row as the keys of User self
 >  but i m not sure how to do it
 >
 >          for i in self._user.keys():
 >              self[i]=self._user[i]
 >
 >  gives an error
 >  Traceback (most recent call last):
 >    File "<stdin>", line 1, in <module>
 >    File "api.py", line 40, in __init__
 >      self[i]=self._user[i]
 >  AttributeError: teenwag instance has no attribute '__setitem__'
 >
 >  You can do something like
 >
 >  self.update(_user)
 >
 >  doesnt work either
 >  Traceback (most recent call last):
 >    File "<stdin>", line 1, in <module>
 >    File "api.py", line 39, in __init__
 >      self.update(self._user)
 >  AttributeError: user instance has no attribute 'update'
 >
 >  Any thoughts on how to set this?
 >
 >  class User:
 >      """user object
 >      """
 >
 >      def __init__(self, id):
 >          self._id = id
 >          self._user=db.query('select * from users where
 > id=$id',vars=locals())
 >          if not self._user:
 >              self._validuser=False
 >              self._username=''
 >              self._firstname=''
 >              self._lastname=''
 >              self._dob=''
 >              self._gender=''
 >              self._sex=''
 >          else:
 >              self._user=self._user[0]
 >              self._validuser=True
 >          self._username=self._user.username
 >          self._firstname=self._user.first_name
 >          self._lastname=self._user.last_name
 >          self._dob=self._user.dob
 >          self._gender=self._user.gender
 >          self._sex=self._user.gender
 >          for i in self._user.keys():
 >              self[i]=self._user[i]
 >      def userrow(self):
 >          return db.query('select * from users where
 > id=$self._id',vars=locals())[0]
 >      def photos(self):
 >          return db.query('select pic,id, username from userpics where
 > user_id=$self._id',vars=locals())
 >
 >
 >
 >  >  >
 >

    


  

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "web.py" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/webpy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to