안녕하세요. 언제나 휴일, 언휴예요.
파생 형식 개체를 컬렉션에 보관할 때 특정 부분에서 해당 개체가 어떠한 형식인지 확인하여 필요한 멤버 메서드를 호출해야 할 때가 있어요. 예를 들어 피아니스트와 드러머를 보관하는 컬렉션에 있는 각 개체를 순차적으로 접근하여 해당 개체가 음악가이면 연주하기 전에 Tuning을 수행하고 드러머이면 TrunStick을 수행하려고 한다면 해당 개체가 어떠한 형식인지 판별할 수 있어야 합니다.
Python에서는 내장 함수 isinstance를 제공하여 변수가 참조하고 있는 개체가 어떠한 형식인지 확인할 수 있어요.
#isinstance 내장 함수 class Musician: def __init__(self,name): self.__name = name print(name + " 음악가 생성") def GetName(self): return self.__name def Play(self): print(self.__name + "음악가, 랄라라~") class Pianist(Musician): def __init__(self,name): super().__init__(name) print(name+" 피아니스트") def Play(self): super().Play() print(self.GetName() +", 딩동댕") def Tuning(self): print("도도 레레 미미") class Drummer(Musician): def __init__(self,name): Musician.__init__(self,name) def TurnStick(self): print("휘리릭~ 휘릭~") band = list() band.append(Pianist("홍길동")) band.append(Drummer("강감찬")) for musician in band: musician.Play() if(isinstance(musician,Pianist)): musician.Tuning() if(isinstance(musician,Drummer)): musician.TurnStick()