1

我被告知

定义一个新类 Track,它有一个艺术家(一个字符串)、一个标题(也是一个字符串)和一个专辑(见下文)。

  1. 有方法__init__(self, artist, title, album=None)。参数艺术家和标题是字符串,专辑是专辑对象(见下文)
  2. 有一个方法__str__(self)可以返回此轨道的合理字符串表示
  3. 有一种方法set_album(self, album)可以将此曲目的专辑设置为专辑

这是我第一次使用类,我想知道是否有人可以解释在 Python 中使用字符串和对象之间的区别。我__str__也读过,但我不确定它是如何工作的。它说“返回的字符串__str__是供应用程序用户查看的”,但我从来没有看到我的输入的返回值。有人可以解释一下please的用法__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")
4

1 回答 1

0

你的课程对我有好处,但如果你真的希望属性是字符串,你应该考虑使用@property 装饰器并制作propper setter 和getter。下面的例子:

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")
于 2012-10-08T22:32:50.713 回答