Representing object values __str__
Question: I have the following code:

    
    
    import urllib
    
    class Get:
    
        def sendData(self):
            self.data = urllib.urlencode({"contains":"silabeador"})   
            self.u = urllib.urlopen('http://tip.iatext.ulpgc.es/silabas/default.aspx', data)
    
    request=Get()
    print (request.sendData)
    

My output or returned value of the data sent to url is the following:

    
    
    <bound method Get.sendData of <__main__.Get instance at 0x7f6089f5e050>>
    

How to can I get the value of the object Get and not their representation?

By the way, I am a newbie in python interested in send to some site a couple
of values and that this site receive this values in a texbox and search and
retrieve these search values. I say this, because request library
<http://docs.python-requests.org/en/latest/> it's a great alternative really?

Best Regards

**EDIT**

I have been organized my small code of this better way:

    
    
    import urllib
    
    class Get:              
        def __init__(self):
            data = urllib.urlencode({"contains":"silabeador"})   
            u = urllib.urlopen('http://localhost:8000/login/', data)
            print(u.read())
    request=Get()
    print request
    

And when I try get the value of my small page (on my localhost machine) I get
them, but at the end I see the object value too, the <**main**.Get instance at
0x7f052c4e00e0> value at the end ...

    
    
    ➜  ~  python2 pageGET.py          
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta http-equiv="content-type" content="text/html; charset=utf-8">
      <meta name="robots" content="NONE,NOARCHIVE">
      <title>403 Forbidden</title>
      <style type="text/css">
        html * { padding:0; margin:0; }
        body * { padding:10px 20px; }
        body * * { padding:0; }
        body { font:small sans-serif; background:#eee; }
        body>div { border-bottom:1px solid #ddd; }
        h1 { font-weight:normal; margin-bottom:.4em; }
        h1 span { font-size:60%; color:#666; font-weight:normal; }
        #info { background:#f6f6f6; }
        #info ul { margin: 0.5em 4em; }
        #info p, #summary p { padding-top:10px; }
        #summary { background: #ffc; }
        #explanation { background:#eee; border-bottom: 0px none; }
      </style>
    </head>
    <body>
    <div id="summary">
      <h1>Prohibido <span>(403)</span></h1>
      <p>CSRF verificacion fallida. Solicitud abortada</p>
    
    
      <p>Estás viendo este mensaje porqué esta web requiere una cookie CSRF cuando se envían formularios. Esta cookie se necesita por razones de seguridad, para asegurar que tu navegador no ha sido comprometido por terceras partes.</p>
      <p>Si has inhabilitado las cookies en tu navegador, por favor habilítalas nuevamente al menos para este sitio, o para solicitudes del mismo origen.</p>
    
    </div>
    
    <div id="info">
      <h2>Help</h2>
    
        <p>Reason given for failure:</p>
        <pre>
        CSRF cookie not set.
        </pre>
    
    
      <p>In general, this can occur when there is a genuine Cross Site Request Forgery, or when
      <a
      href="https://docs.djangoproject.com/en/1.8/ref/csrf/">Django's
      CSRF mechanism</a> has not been used correctly.  For POST forms, you need to
      ensure:</p>
    
      <ul>
        <li>Your browser is accepting cookies.</li>
    
        <li>The view function passes a <code>request</code> to the template's <a
        href="https://docs.djangoproject.com/en/dev/topics/templates/#django.template.backends.base.Template.render"><code>render</code></a>
        method.</li>
    
        <li>In the template, there is a <code>{% csrf_token
        %}</code> template tag inside each POST form that
        targets an internal URL.</li>
    
        <li>If you are not using <code>CsrfViewMiddleware</code>, then you must use
        <code>csrf_protect</code> on any views that use the <code>csrf_token</code>
        template tag, as well as those that accept the POST data.</li>
    
      </ul>
    
      <p>You're seeing the help section of this page because you have <code>DEBUG =
      True</code> in your Django settings file. Change that to <code>False</code>,
      and only the initial error message will be displayed.  </p>
    
      <p>You can customize this page using the CSRF_FAILURE_VIEW setting.</p>
    </div>
    
    </body>
    </html>
    
    **<__main__.Get instance at 0x7f052c4e00e0>**
    


Answer: by using

    
    
    print (request.sendData)
    

you are justing printing a **method definition** for `sendData()`.

In order to print the data, you just have to use `print (request.data)` since
you defined it in your class method.

**EDIT:**

Let's take a look at what you are doing in your second `__init__()` method.

    
    
    def __init__(self):
       1- data = urllib.urlencode({"contains":"silabeador"})   
       2- u = urllib.urlopen('http://localhost:8000/login/', data)
       3- print(u.read())
    

1- You are encoding data

2- You are opening an url

3- You are reading from the url and printing it. The output is the html page.

Then next, on this line

    
    
    request=Get()
    

You are creating an instance of Get and assigning it to `request`, Next, you
are printing `request`, which is an object reference.

So you want to print out just the pages contents? You can either:

1- Remove the `print request`

2- Change your method to:

    
    
    def __init__(self):
            data = urllib.urlencode({"contains":"silabeador"})   
            u = urllib.urlopen('http://localhost:8000/login/', data)
            self.data = u.read() #assign the page content to an attribute
    
    request = Get()
    print request.data #print the data attribute.
    

