Reputation: 319
This is my first program in Python and I'm working with some API which is used to log in or register user.
This is how my class looks like:
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!'
I tested this class with code below:
api_test = MyClass('apikeyadfasdf', 'gameiddfdfd', 'seckey34324324', 'JSON',
'admin', 'pass1')
print(api_test)
and I got output like this:
<package1.package2.file_name.MyClass object at 0x7f278388b48>
But when I change my test to this:
api_test = MyClass('apikeyadfasdf', 'gameiddfdfd', 'seckey34324324', 'JSON',
'admin', 'pass1')
data = api_test.userregistration(username, password, email)
print(data)
it'll do the thing and I'll get my output, but it'll execute that function two times.
I was thinking where the problem could be and I remembered that in JAVA you could get similar output when you forget about override toString(). Now, I've read about python equivalents: repr and str but firstly I don't know how to return data from methods (not self.apikey etc.) and secondly I'm not 100% sure that is the right way to get my output, not address.
Upvotes: 0
Views: 3613
Reputation: 33817
If the problem is that you get the userregistration
executed two times -- you execute it two times. Once in the __init__
and once explicitly.
Regarding returning from __init__
check SO "How to return a value from __init__ in Python?" :
__init__ returns the newly created object. You cannot (or at least shouldn't) return something else.
And besides, don't use the return value to indicate error - use exceptions:
Upvotes: 1