开发者

GAE - Getting TypeError requiring class instance be passed to class's own method

I'm really new to programming... I set up a class to give supporting information for Google's User API user object. I store this info in the datastore using db.model.

When I call the okstatus method of my user_info class using this code:

elif user_info.okstatus(user):
    self.response.out.write("user allowed")

I get this error:

unbound method okstatus() must be called with user_info instance
as first argument (got User instance instead)

Here is my user_info class.

class user_info:
    def auth_ctrlr(self, user):
        if self.status(user) == status_allowed:
            return ("<a href=\"%s\">Sign Out</a>)" %
                (users.create_login_url("/")))
        else:
            return ("<a href=\"%s\">Sign In or Get an Account</开发者_StackOverflow社区a>)" %
                (users.create_logout_url("/")))
    def status(self, user):
        match = sub_user.gql(qu_by_user_id, user.user_id)
        return match.string_status
    def group(self, user):
        match = sub_user.gql(qu_by_user_id, user.user_id)
        grp = group_names.gql(qu_by_user_id, match.groupID)
        return grp
    def okstatus(self, user):
        match = self.status(user)
        if match == status_allowed:
            return True

My understanding is that the argument "self" inside the method's calling arguments describes it as a child to the class. I've tried everything I can think of and can't find any related info online. Can someone please tell me what I'm doing wrong?

Thanks


self must be an instance of the class. Since you never actually use it, you can simply make all of these methods into functions (and changing the self.status cases to just status).

If you're a "class fetishist", and absolutely insist on keeping the functions as methods in a class (rather than the module top-level functions they "want" to be!-), then change the call site to

elif user_info().okstatus(user):

that is, make an instance of your user_info class, and call the method on it (the useless instance then immediately goes away, pointing out that these should really be functions;-).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜