014:class and objects > 멀티태스킹

3091 단어
1. 먼저 다태적 개념을 설명한다. 다태성은 아버지 대상을 하나 이상의 아들 대상과 같은 기술로 설정하는 것을 허용하는 것이다. 값을 부여한 후에 아버지 대상은 현재 값을 부여한 아들 대상의 특성에 따라 서로 다른 방식으로 작동할 수 있다.
2. 오리 유형의 개념을 설명한다. 하나의 대상이 효과적인 의미는 특정한 종류를 계승하거나 특정한 인터페이스를 실현하는 것이 아니라 현재의 방법과 속성의 집합에 의해 결정된다.
이 개념의 이름은 제임스 왓컴비 릴리가 제시한 오리 테스트에서 유래했다. "새 한 마리가 걷는 것이 오리 같고, 수영하는 것이 오리 같고, 짖는 것도 오리 같으면 이 새를 오리라고 할 수 있다."
 
그리고 동적 언어로서 파이톤도 오리 유형이기 때문에 파이톤의 다태적 실현 방식은 다른 고급 언어와 큰 차이가 있을 것이다. 파이톤 자체가 약한 유형이기 때문에 파이톤에서 다태적 실현은 큰 의미가 없는 것 같다.
 
class AudioPlayer(object):
    def __init__(self, file_name):
        super(AudioPlayer, self).__init__()
        if not file_name.endswith(self.ext):
            raise Exception("Invalid file format")
        self.file_name = file_name

class MP3Player(AudioPlayer):
    ext = "mp3"
    def play(self):
        print("playing {} as mp3".format(self.file_name))

class WAVPlayer(AudioPlayer):
    ext = "wav"
    def play(self):
        print("playing {} as wav".format(self.file_name))            

mp3_player = MP3Player("xx.mp3")

wav_player = WAVPlayer("yy.wav")

mp3_player.play()
wav_player.play()                    

좋은 웹페이지 즐겨찾기