1

と言われて

アーティスト (文字列)、タイトル (文字列)、およびアルバム (以下を参照) を持つ新しいクラス Track を定義します。

  1. メソッドを持ってい__init__(self, artist, title, album=None)ます。引数の artist と title は文字列で、 album は Album オブジェクトです (以下を参照)。
  2. __str__(self)このトラックの適切な文字列表現を返すメソッドを持っています
  3. set_album(self, album)このトラックのアルバムをアルバムに設定するメソッドを持っています

クラスを扱うのはこれが初めてで、誰かが Python での文字列とオブジェクトの使用の違いを説明できるかどうか疑問に思っていました。について__str__も読みましたが、それがどのように機能するのか正確にはわかりません。「によって返される文字列は__str__、アプリケーションのユーザーが表示するためのものです」と書かれていますが、入力の戻り値は表示されません。__str__誰かがpleaseの使い方を説明できますか?

ガイドラインに正しく従ったかどうかもわかりません。誰かが私がしたことが正しいことを確認できれば、それは素晴らしいことです。

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デコレータの使用を検討し、適切なセッターとゲッターを作成する必要があります。以下の例:

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 に答える