茨の道も一歩から

インフラ構築からプログラミング(Python・JavaScript)までITに関するブログです。

101日目:Pythonプログラミング

Pythonプログラミングの講義35日目です。

今日の講義は、オブジェクトについて。内職はDjangoアプリバグ調査。

【講義内容】

  • オブジェクト

【ワンポイント】

abc_player.py

from abc import ABC, abstractmethod

class Player(ABC):    
    @abstractmethod
    def play(self):
        pass
    @abstractmethod
    def stop(self):
        pass
    @abstractmethod
    def eject(self):
        pass
    @abstractmethod
    def next(self):
        pass
    @abstractmethod
    def prev(self):
        pass

class CDPlayer(Player):
    def __init__(self, maker, name, model):
        self.maker = maker
        self.name = name
        self.model = model
        self.play_list = []
        self.now_play = 0
        self.playing = False
    def play(self):
        if not self.playing and len(self.play_list):
            self.playing = True
            print(f'PLAY: {self.play_list[self.now_play]}')
    def stop(self):
        if self.playing and len(self.play_list):
            self.playing = False
            print(f'STOP: {self.play_list[self.now_play]}')
    def eject(self, play_list=None):
        if play_list is not None:
            self.play_list = play_list
            self.now_play = 0
            print(f'INSERT: {self.play_list}')
        else:
            self.play_list = []
            self.now_play = 0
            print(f'EJECT: No media.')
    def next(self):
        if len(self.play_list):
            self.now_play = (self.now_play+1) % len(self.play_list)
            print(f'NEXT: {self.play_list[self.now_play]}')
    def prev(self):
        if len(self.play_list):
            self.now_play = self.now_play-1 if self.now_play>0 else len(self.play_list)-1
            print(f'PERV: {self.play_list[self.now_play]}')

if __name__ == "__main__":
    cdp = CDPlayer('SOMY', 'Aroundman', 'S905-A')
    cdp.eject(['きょうりゅうのマーチ', 'ブイサイン', '炎上'])
    cdp.play()
    cdp.next()
    cdp.next()
    cdp.stop()
    cdp.next()
    cdp.play()
    cdp.prev()
    cdp.prev()
    cdp.prev()
    cdp.eject()
    cdp.eject()
    cdp.next()
    cdp.play()
    cdp.prev()
    cdp.eject()
    cdp.stop()

【今日の積み上げ】