如何输出python类?

How can I print a Python class?

本问题已经有最佳答案,请猛点这里访问。

我有一个包含几个函数的类(其中大部分包含解析smth的代码,获取所有必要的信息并打印出来)。我正在打印一个班级,但我得到了SMTH。类似于位于0x000000003650888>的<.testclass实例。代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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

当我在课堂外打印函数时-一切正常。我做错了什么?我该如何打印课程?

谢谢!


这就是预期的行为。除非定义__str____repr__方法来给类提供字符串表示,否则python无法知道类是如何表示的。

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

示例__repr__

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

可以定义__str__来生成类的可读"描述"。如果不提供,您将得到__repr__

示例__str__

1
2
def __str__(self):
    return"(TestClass instance)"


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

请参见:http://docs.python.org/2/reference/datamodel.html object. repr__

http://docs.python.org/2/reference/datamodel.html object.uu str__