表示对象值__str__

时间:2015-11-12 18:26:25

标签: python python-requests urllib

我有以下代码:

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)

我发送到url的数据的输出或返回值如下:

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

如何获取对象Get的值而不是它们的表示?

顺便说一句,我是python的新手,有兴趣向某个网站发送几个值,并且该网站在texbox中接收此值并搜索并检索这些搜索值。我这样说,因为请求库http://docs.python-requests.org/en/latest/真的是一个很好的选择吗?

最好的问候

修改

我已经按照这种更好的方式组织了我的小代码:

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

当我尝试获取我的小页面的值(在我的localhost机器上) 我得到了它们,但最后我也看到了对象值,&lt; main .Get实例位于0x7f052c4e00e0&gt;最后的价值......

➜  ~  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>**

1 个答案:

答案 0 :(得分:3)

使用

print (request.sendData)

您正在为sendData()打印方法定义

要打印数据,您只需使用print (request.data) 因为你在类方法中定义它。

修改

让我们看看你在第二个__init__()方法中做了什么。

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

1-您正在编码数据

2-您正在打开网址

3-您正在从网址阅读并打印它。输出是html页面。

接下来,在这一行

request=Get()

您正在创建Get实例并将其分配给request,接下来,您正在打印request,这是一个对象引用。

所以你想打印出的页面内容? 你可以:

1-删除print request

2-将您的方法更改为:

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.