Possible Duplicate:
Python: How to print a class or objects of class using print()?
我现在有这个代码:

class Track(object):
    def __init__(self,artist,title,album=None):
        self.artist = artist
        self.title = title
        self.album = album

    def __str__(self):
        return self.title + self.artist + self.album

现在,当我把类似Track('Kanye West','Roses','Late Registration')的东西放入终端时,我会得到<__main__.Track object at 0x10f3e0c50>如何让它返回或打印该位置的值?
我是编程新手,尤其是‘面向对象编程’新手,所以我的问题是什么是类?如何在类中定义函数?

最佳答案

您应该定义__repr__方法:

class Track(object):

    ...

    def __repr__(self):
        return ('Track(artist=%s album=%s title=%s)'
                % (repr(self.artist), repr(self.title), repr(self.album)))

现在您可以在终端中看到对象的表示:
>>> Track('Kanye West','Roses','Late Registration')
Track(artist='Kanye West' album='Roses' title='Late Registration')

注意__str____repr__方法之间存在差异:
__str__需要将对象转换为字符串。呼叫:str(obj)
__repr__-用于人类可读的可视化。呼叫:repr(obj)
当您进入终端obj时,python会自动调用repr函数。但是如果使用print obj表达式,python将调用str函数:
>>> obj
...repr of obj here...
>>> print obj
...str of obj here...

有关更多信息,请参见doc

关于python - 如何在python中打印/返回一个类? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12802016/

10-10 08:32
查看更多