2013-08-18 2 views
0

이것은 파이썬에서 만든 첫 번째 프로그램으로, 로그인하거나 사용자를 등록하는 데 사용되는 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) 

나는 그것을 할 것이고 출력을 얻겠지만, 그 함수를 두 번 실행할 것이다.

나는 문제가있을 수있는 곳을 생각하고 있었고, 자바에서 toString()을 무시했을 때 비슷한 결과를 얻을 수 있다고 생각했다. 자, 나는 파이썬 이에 상응하는 내용에 대해 읽었습니다 : reprstr하지만 처음에는 메소드 (self.apikey 등이 아닌)에서 데이터를 반환하는 방법을 모르고 두 번째로 나는 100 % 확실하지 않습니다. 주소가 아닌 제 출력물을 얻는 올바른 방법입니다.

+0

당신은 내가 결과입니다 의심 일부 들여 쓰기 문제가 잘못 또는 무엇인가 붙여 넣기. 'def userregistration (self ...'etc ...)을 체크 할 수 있다면 그 라인과 다음 라인이 정확하게 들여 쓰기되어 있는지 확인하십시오. –

+0

이제는 IDE에서와 똑같아 보이네요. –

답변

1

userregistration을 두 번 실행하면 문제가 2 번 실행됩니다. 일단 __init__에 들어가면 명시 적으로 한 번.

는 SO "How to return a value from __init__ in Python?"__init__ 검사에서 돌아 관한 : 새로 생성 된 객체를 반환 __init__

합니다. 당신은 다른 것을 돌려 줄 수 없다.

게다가, 오류 표시하기 위해 반환 값을 사용하지 않는 - 사용 예외 :

+0

문제는 나는 첫 번째 예제에서와 같이 테스트 할 때 정상 출력 (클래스의 메서드에서)을 얻을 수 없다. 두 번째 테스트 예제에서 두 번 실행했는데 작동하는지 확인했지만이 방법은 용납 할 수없는 솔루션이다 –

+0

Ok, 지금 나는 그것을 얻는다. 그것은 어리석은 질문이었다, 미안. 고맙다. :) –

관련 문제