6

我有一个包含多个函数的类(其中大部分包含解析smth的代码,获取所有必要的信息并打印它)。我正在尝试打印课程,但我得到了smth。像<_ main _.TestClass 实例在 0x0000000003650888>。代码示例:

from lxml import html
import urllib2
url = 'someurl.com'


class TestClass:

    def testFun(self):
        f = urllib2.urlopen(url).read()
        #some code

        print 'Value for ' +url+ ':', SomeVariable

    def testFun2(self):
        f2 = urllib2.urlopen(url).read()
        #some code

        print 'Value2 for ' +url+ ':', SomeVariable2

test = TestClass()
print test

当我在课外打印功能时 - 一切正常。我做错了什么,如何打印课程?

谢谢!

4

2 回答 2

7

这是预期的行为。Python 无法知道类是如何表示的,除非你定义一个__str__or__repr__方法来给类一个字符串表示。

需要明确的是:__repr__通常定义为生成一个字符串,该字符串可以被评估回类似的对象(在您的情况下,TestClass())。默认__repr__打印出<__main__.TestClass instance at 0xdeadbeef>你看到的东西。

示例__repr__

def __repr__(self):
    return self.__class__.__name__ + '()' # put constructor arguments in the ()

__str__可以定义为生成类的人类可读的“描述”。如果未提供,您将获得__repr__.

示例__str__

def __str__(self):
    return "(TestClass instance)"
于 2013-02-19T07:28:02.240 回答
1

看起来您想要打印类的实例而不是类本身。定义一个__str__or__repr__方法,该方法返回打印实例时要使用的字符串。

请参阅:http ://docs.python.org/2/reference/datamodel.html#object.__repr__

http://docs.python.org/2/reference/datamodel.html#object.__str__

于 2013-02-19T07:29:08.210 回答