"better" is relative. it is less code. (i dont think you need that
setattr, just do it directly.)
and i think you'd just use:
j.keys()
you wont seem the attrs in the autocompletion because they are dynamic.
-b
On Wed, May 14, 2008 at 12:41 PM, Paul Jobs <[EMAIL PROTECTED]> wrote:
>
> class User(Storage):
>
> def __init__(id):
> self.userrow=db.query('select * from users where id=
> $self._id',vars=locals())[0]
> for k in self.userrow.keys():
> setattr(self,k,self.userrow[k])
> #self.k=self.userrow[k]
>
> both setattra and self.k = self.userrow methods are not working after
> inheriting from storage
>
> >>> j.
> j.__class__ j.__gt__ j.__repr__
> j.getliveuserrow j.popitem
> j.__cmp__ j.__hash__ j.__setattr__ j.getphotos
> j.publishfeed
> j.__contains__ j.__init__ j.__setitem__ j.getuserrow
> j.save
> j.__delattr__ j.__iter__ j.__str__ j.has_key
> j.setdefault
> j.__delitem__ j.__le__ j.__weakref__ j.items
> j.setlastlogin
> j.__dict__ j.__len__ j.clear j.iteritems
> j.setlastlogin300
> j.__doc__ j.__lt__ j.copy j.iterkeys
> j.update
> j.__eq__ j.__module__ j.fromkeys j.itervalues
> j.values
> j.__ge__ j.__ne__ j.get j.keys
> j.__getattr__ j.__new__ j.getfeeds
> j.kissallfriends
> j.__getattribute__ j.__reduce__ j.getfriends
> j.pokeallfriends
> j.__getitem__ j.__reduce_ex__ j.getlastloginstr j.pop
>
>
> without Storage
> class User:
> all the column elements are accessible as j.htmlcodes j.first_name and so
> on
> j.
> j.__class__ j.hotmail j.number_userpics
> j.__doc__ j.htmlcodes j.number_uservideos
> j.__init__ j.id j.number_votes
> j.__module__ j.interests j.pageviews
> j.aim j.ip j.password
> j.books j.kissallfriends j.pokeallfriends
> j.city j.last_login j.profilepic
> j.created j.last_name j.publishfeed
> j.dob j.liketomeet j.rating
> j.email j.movies j.rawpassword
> j.email_subscribe j.music j.save
> j.favoritestuff j.myrand j.setlastlogin
> j.first_name j.number_activities j.setlastlogin300
> j.gender j.number_comments j.site
> j.getfeeds j.number_communities j.skype
> j.getfriends j.number_friends j.television
> j.getlastloginstr j.number_pages j.userid
> j.getliveuserrow j.number_pictures j.username
> j.getphotos j.number_polls j.userrow
> j.getuserrow j.number_posts j.validuser
> j.groups j.number_useraudios j.vanity
> j.hash j.number_usermessages j.yahoo
> j.heroes j.number_usermessages_sent j.zip
>
>
> Brent Pedersen wrote:
> i think you have it all, just have User be inherit from Storage:
>
> from web.utils import Storage
> class User(Storage):
> def __init__(....)
>
> -brent
>
>
>
> On Wed, May 14, 2008 at 12:45 AM, Paul <[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: 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
-~----------~----~----~----~------~----~------~--~---