如何打印 Python 类? [复制]
Posted
技术标签:
【中文标题】如何打印 Python 类? [复制]【英文标题】:How can I print a Python class? [duplicate] 【发布时间】:2013-02-03 19:24:45 【问题描述】:我有一个包含几个函数的类(其中大部分包含解析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
当我在课外打印函数时 - 一切正常。我做错了什么以及如何打印课程?
谢谢!
【问题讨论】:
【参考方案1】:这是预期的行为。除非您定义 __str__
或 __repr__
方法为类提供字符串表示,否则 Python 无法知道该类是如何表示的。
要明确:__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)"
【讨论】:
0xdeadbeef
如果你打到这个内存位置我给你买个股份【参考方案2】:
看起来您想打印类的实例而不是类本身。定义一个__str__
或__repr__
方法,该方法返回打印实例时要使用的字符串。
见:http://docs.python.org/2/reference/datamodel.html#object.__repr__
http://docs.python.org/2/reference/datamodel.html#object.__str__
【讨论】:
感谢您的回答和补充信息!以上是关于如何打印 Python 类? [复制]的主要内容,如果未能解决你的问题,请参考以下文章