如何打印Python类?

Ale*_*x A 5 python class

我有一个包含几个函数的类(其中大部分包含解析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
Run Code Online (Sandbox Code Playgroud)

当我在课外打印功能时 - 一切都好.我做错了什么,怎么打印课?

谢谢!

nne*_*neo 6

这是预期的行为.Python无法知道如何表示类,除非您定义一个__str____repr__方法来为类提供字符串表示.

要清楚:__repr__通常定义为生成一个字符串,可以将其评估回​​类似的对象(在您的情况下TestClass()).默认__repr__打印出<__main__.TestClass instance at 0xdeadbeef>您看到的内容.

示例__repr__:

def __repr__(self):
    return self.__class__.__name__ + '()' # put constructor arguments in the ()
Run Code Online (Sandbox Code Playgroud)

__str__可以定义为生成类的人类可读的"描述".如果没有提供,你得到__repr__.

示例__str__:

def __str__(self):
    return "(TestClass instance)"
Run Code Online (Sandbox Code Playgroud)