how to print/return a class in python?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Python: How to print a class or objects of class using print()?
我现在有这个代码:
1 2 3 4 5 6 7 8 | 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 |
现在,当我把类似于
我不熟悉编程,尤其是"面向对象编程",所以我的问题是什么是类?如何在类中定义函数?
您应该定义
1 2 3 4 5 6 7 | class Track(object): ... def __repr__(self): return ('Track(artist=%s album=%s title=%s)' % (repr(self.artist), repr(self.title), repr(self.album))) |
现在可以看到终端中对象的表示:
1 2 | >>> Track('Kanye West','Roses','Late Registration') Track(artist='Kanye West' album='Roses' title='Late Registration') |
注意,
__str__ 需要将对象转换为字符串。电话:str(obj) 。__repr__ —用于人可读的可视化。电话:repr(obj) 。
当您放入终端
1 2 3 4 | >>> obj ...repr of obj here... >>> print obj ...str of obj here... |
有关详细信息,请参阅文档。
你的代码很好,但你忘了什么。
假设你有这门课:
1 2 3 | class Bob(): def __init__(self, hobby): self.hobby = hobby |
在控制台上,你可以做一个有如下爱好的鲍勃班:
1 | a = Bob("skiing") |
然后,为了获得鲍勃的爱好,你可以做:
1 | print a.hobby |
现在,回到你的问题上来,你做了
您创建了一个对象,但没有将该对象赋给变量。所以你的结果就是物体本身…您可以简单地打印对象,它将调用
1 | print Track('Kanye West','Roses','Late Registration') |
会有用的,但如果你想做得更好一点。(例如)
1 2 3 4 | a = Track('Kanye West','Roses','Late Registration') print a.title print a.artist print a.album |
如果您仅仅为了调试目的而需要它来检查对象的内部值,您可以这样做
1 | Track('Kanye West','Roses','Late Registration').__dict__ |
它将以python dict的形式显示内部数据表示