如何在python中打印/返回一个类?

iam*_*sla 2 python class object python-2.7

可能重复:
Python:如何使用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
Run Code Online (Sandbox Code Playgroud)

现在,当我把一些东西Track('Kanye West','Roses','Late Registration')放进终端时,我得到<__main__.Track object at 0x10f3e0c50>如何让它返回或在那个地方打印价值?

我是编程新手,特别是'面向对象编程'的新手,所以我的问题是什么是一个类?如何在类中定义函数?

def*_*fuz 10

你应该定义__repr__方法:

class Track(object):

    ...

    def __repr__(self):
        return ('Track(artist=%s album=%s title=%s)' 
                % (repr(self.artist), repr(self.title), repr(self.album)))
Run Code Online (Sandbox Code Playgroud)

现在您可以在终端中看到对象的表示:

>>> Track('Kanye West','Roses','Late Registration')
Track(artist='Kanye West' album='Roses' title='Late Registration') 
Run Code Online (Sandbox Code Playgroud)

请注意,__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...
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅doc.

  • `__repr__`应该创建一个有效的Python表达式来重新创建对象.因此,您应该更改格式或使用`__str__`代替.见http://docs.python.org/reference/datamodel.html#object.__repr__ (2认同)