Python——多態

    因之前寫的多態 的例子,似乎有點問題,現在重寫改造了一下。

"""
多態的特性是調用不同的子類將會產生不同的行爲,而無需明確知道這個子類實際上是什麼
"""
class AudioFile:

    def __init__(self, filename):
        if not filename.endswith(self.ext): #檢測來自子類的ext變量是否以按指定的格式結尾,如果不是則引發異常(初始化音頻文件需按指定的格式)
            raise Exception("Invalid file format")
        self.filename = filename

class MP3File(AudioFile):
    ext = "mp3"
    def play(self):
        #mp3音頻具體的處理細節
        print("play %s music..." % self.filename)

class WavFile(AudioFile):
    ext = "wav"
    def play(self):
        #wav音頻具體的處理細節
        print("play %s music..." % self.filename)

class OggFile(AudioFile):
    ext = "ogg"
    def play(self):
        #ogg音頻具體的處理細節
        print("play %s music..." % self.filename)

class Player:
    #這是一個播放器,用於播放不同格式的音頻
    def start(self, audio):
        print("Initialize {0} format audio files".format(audio.ext))
        print("Audio file: {0} playing".format(audio.filename))
        audio.play()

if __name__ == '__main__':

    #創建一個播放器
    player = Player()

    #創建3個不同格式的音頻文件
    ogg = OggFile("hello.ogg")
    mp3 = MP3File("free abc.mp3")
    wav = WavFile("love.wav")

    #播放器播放音樂
    player.start(ogg)

    #看起來好像都是調用了同一個play()方法,但每不同格式的音頻文件所實現的功能是不同的


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章