如何打印 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__ 打印出你看到的&lt;__main__.TestClass instance at 0xdeadbeef&gt;

例如__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 类? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Python:如何打印字典值? [复制]

如何在 python 中打印 n 次? [复制]

如何更改 Python 类的字符串表示形式? [复制]

我如何在python中向后打印一个单词? [复制]

如何在 Python 中打印大量数字? [复制]

如何防止 Python 打印添加换行符或空格? [复制]