0

这是我在 Python 中的第一个程序,我正在使用一些用于登录或注册用户的 API。

这就是我的班级的样子:

class MyClass:
    ...
    def __init__(self, apikey, gameid, securitykey, responseformat, 
                 username=None, password=None, email=None)
        self.apikey = apikey
        self.gameid = gameid
        self.securitykey = securitykey
        self.responseformat = responseformat

        if username and password:
            self.userlogin(username,password)
        if username and password and email:
            self.userregistration(username, password, email)

    ''' And there are function userlogin and userregistration
    i'll show just one of them '''

    def userregistration(self, username, password, email):
        securitypayload = self.buildurl(username, password, email)
        user = requests.get('url', params = securitypayload)
        if 'error' in user.text:
            return user.text
        else:
            return 'Success!'

我用下面的代码测试了这个类:

api_test = MyClass('apikeyadfasdf', 'gameiddfdfd', 'seckey34324324', 'JSON', 
                    'admin', 'pass1')
print(api_test)

我得到这样的输出:

<package1.package2.file_name.MyClass object at 0x7f278388b48>

但是当我把我的测试改成这样时:

api_test = MyClass('apikeyadfasdf', 'gameiddfdfd', 'seckey34324324', 'JSON', 
                    'admin', 'pass1')
data = api_test.userregistration(username, password, email)
print(data)

它会做的事情,我会得到我的输出,但它会执行该功能两次。

我在想问题可能出在哪里,我记得在 JAVA 中,当您忘记覆盖 toString() 时,您可以获得类似的输出。现在,我已经阅读了有关 python 等价物的信息:reprstr但首先我不知道如何从方法(不是 self.apikey 等)返回数据,其次我不是 100% 确定这是正确的获取方式我的输出,而不是地址。

4

1 回答 1

1

如果问题是你被userregistration执行了两次——你执行了两次。一次进入__init__并且一次明确。

关于从__init__检查返回“如何在 Python 中从 __init__ 返回值? ”:

__init__ 返回新创建的对象。你不能(或至少不应该)返回其他东西。

此外,不要使用返回值来指示错误 - 使用异常:

于 2013-08-18T23:00:49.423 回答