如何打印一个Python类?
我有一个类,这个类里面有好几个函数(大部分是用来解析一些东西、获取所有必要的信息并打印出来的)。我试着打印这个类的内容,但得到的结果是<_main_.TestClass instance at 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
当我打印类外的函数时,一切都正常。我哪里做错了,怎样才能打印出这个类的内容呢?
谢谢!
2 个回答
1
看起来你想打印的是一个类的实例,而不是这个类本身。你需要定义一个 __str__
或 __repr__
方法,这样在打印这个实例的时候就会返回一个字符串。
可以参考这里: http://docs.python.org/2/reference/datamodel.html#object.__repr__
还有这里: http://docs.python.org/2/reference/datamodel.html#object.__str__
7
这是正常的行为。Python 不能知道一个类是怎么表示的,除非你定义一个 __str__
或 __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)"