使用python定义使用对象和字符串的类

时间:2012-10-08 22:15:39

标签: python string

我被告知

  

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

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

这是我第一次使用类,我想知道是否有人可以解释在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")

1 个答案:

答案 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")