我被告知
定义一个新类Track,它有一个艺术家(一个字符串),一个标题 (也是一个字符串)和一张专辑(见下文)。
- 有方法
__init__(self, artist, title, album=None)
。争论艺术家和标题是字符串,专辑是专辑 对象(见下文)- 方法
__str__(self)
返回此轨道的合理字符串表示- 有一个方法
醇>set_album(self, album)
可将此曲目的专辑设置为专辑
这是我第一次使用类,我想知道是否有人可以解释在Python中使用字符串和对象之间的区别。我也读了__str__
,但我不确定它是如何工作的。它说“__str__
返回的字符串是供应用程序的用户查看的”但我从未看到输入的返回值。有人可以解释使用__str__
吗?
我不确定我是否也正确遵循了指南,如果有人能确认我所做的是正确的,那就太棒了。
class Track:
def __init__(self, artist, title, album=None):
self.artist = str(artist)
self.title = str(title)
self.album = album
def __str__(self):
return self.artist + " " + self.title + " " + self.album
def set_album(self, album):
self.album = album
Track = Track("Andy", "Me", "Self named")
答案 0 :(得分:0)
你的课对我有好处,但如果你真的想要属性是字符串,你应该考虑使用@property装饰器并制作propper setter和getters。 示例如下:
class Track:
def __init__(self, artist, title, album=None):
self._artist = str(artist)
self._title = str(title)
self._album = album
def __str__(self):
return self.artist + " " + self.title + " " + self.album
#example for artist
@property
def artist(self):
return self._artist
@artist.setter
def artist(self, artist):
if artist != type("string"):#ensure that value is of string type.
raise ValueError
else:
self._artist = artist
#this way you could properly make setters and getter for your attributes
#same ofr the other stuff
Track = Track("Andy", "Me", "Self named")