iam*_*sla 2 python class object python-2.7
我目前有这个代码:
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.