>
> > On Sun, Sep 7, 2014 at 5:04 AM, Peter Otten <__pete...@web.de> wrote:
>
> > I would call it with ID only and them the API server would return me
> > all the info, and then I would set them. I didn't learn '@classmethod'
> > decoration yet, but I presume it would work as a 'get()', right? The
> thing
> > is, where 'user with id 43' is stored? You get it using 'from_id' but we
> > don't have any list in there the store users, I got confused in that
> part.
>
> Maybe it becomes clearer with a small change. Instead of the classmethod
> you
> could use a normal function:
>
> class User:
>     def __init__(self, id, personname, ...):
>         self.id = id
>         self.personname = personname
>         ...
>
> def fetch_user_from_server(id):
>     json_user = fetch data_from_server(id)
>     return User(id, json_user["personname"], ...)
>
> jim = fetch_user_from_server(42)
>

I'll definitely use the '@property' decoration. Thanks for the tip, so, a
different module to accommodate all the API requests and one for the
logic/code itself is a better approach, right?



> If you should later decide that you want to provide a way to allow entering
> new users you could use the User class for that, too:
>
> def create_new_user():
>     personname = input("Name: ") # in real code this would rather be a
>                                  # gui dialog or web page
>     ...
>     return User(None, personname, ...)
>
> new_guy = create_new_user()
> save_user_to_server(new_guy)
>
> You don't have to worry that the __init__() method tries to load data for
> an
> inexistent user.
>
> But even if you are sure you'll never do that it is still a good idea to
> keep concerns separate, if only to write independent unit tests for the
> User
> class and the server access.


Creating new users won't exist, my program is like a Home Broker using the
Steam API. This 'User' class will be mainly used to properly store the
users data, I'll automatically and recursively go trough my (or any person)
friend-list and fetch users info and inventory and properly use it in my
favor.

Here is an example of JSON response from the Steam API:

{
        "response": {
                "players": [
                        {
                                "steamid": "76561198067618735",
                                "communityvisibilitystate": 3,
                                "profilestate": 1,
                                "personaname": "wildee14",
                                "lastlogoff": 1410065399,
                                "commentpermission": 1,
                                "profileurl": 
"http://steamcommunity.com/id/wildee14/";,
                                "avatar": 
"http://media.steampowered.com/steamcommunity/public/images/avatars/da/da259bfaef7fe7c2521de78433977a6c006217c5.jpg";,
                                "avatarmedium":
"http://media.steampowered.com/steamcommunity/public/images/avatars/da/da259bfaef7fe7c2521de78433977a6c006217c5_medium.jpg";,
                                "avatarfull":
"http://media.steampowered.com/steamcommunity/public/images/avatars/da/da259bfaef7fe7c2521de78433977a6c006217c5_full.jpg";,
                                "personastate": 0,
                                "realname": "wildee",
                                "primaryclanid": "103582791429571843",
                                "timecreated": 1342807007,
                                "personastateflags": 0,
                                "loccountrycode": "US"
                        }
                ]
                
        }
}
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to