这是我在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等价物: repr 和 str 但首先我不知道如何从方法(不是self.apikey等)返回数据,其次我不是100%确定这是获得输出的正确方法,而不是地址。
答案 0 :(得分:1)
如果问题是你执行了两次userregistration
- 你执行两次。进入__init__
后一次明确。
关于从__init__
返回,请检查SO“How to return a value from __init__ in Python?”:
__ init__返回新创建的对象。你不能(或至少不应该)返回别的东西。
此外,不要使用返回值来表示错误 - 使用例外: