다형성(polymorphism)
이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
잔재미코딩 소식 공유
좀더 제약없이, IT 컨텐츠를 공유하고자, 자체 온라인 강의 사이트와 유투브 채널을
오픈하였습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
● 잔재미코딩 유투브 오픈
[구독해보기]
8. 다형성(polymorphism)¶
- 같은 모양의 코드가 다른 동작을 하는 것
- 키보드의 예로
- push(keyboard): 키보드를 누룬다는 동일한 코드에 대해
- ENTER, ESC, A 등 실제 키에 따라 동작이 다른 것을 의미함
- push(keyboard): 키보드를 누룬다는 동일한 코드에 대해
- 다형성은 코드의 양을 줄이고, 여러 객체 타입을 하나의 타입으로 관리가 가능하여 유지보수에 좋음
Method Override (메서드 재정의) 도 다형성의 한 예입니다.¶
In [209]:
# 클래스 선언
class Person:
def __init__(self, name):
self.name = name
def work(self):
print (self.name + " works hard")
class Student(Person):
def work(self):
print (self.name + " studies hard")
class Engineer(Person):
def work(self):
print (self.name + " develops something")
In [210]:
# 객체 생성
student1 = Student("Dave")
developer1 = Engineer("David")
student1.work()
developer1.work()
메서드명을 동일하게 해서 같은 모양의 코드가 다른 동작을 하도록 하는 다형성 예¶
In [97]:
class SalesWorker:
def __init__(self, name):
self.name = name
def work(self):
print(self.name, 'sells something')
class DevWorker:
def __init__(self, name):
self.name = name
def work(self):
print(self.name, 'develops something')
worker1 = SalesWorker('Dave')
worker2 = SalesWorker('David')
worker3 = SalesWorker('Andy')
worker4 = DevWorker('Aiden')
worker5 = DevWorker('Tina')
worker6 = DevWorker('Anthony')
workers = [worker1, worker2, worker3, worker4, worker5, worker6]
# 객체 타입에 따라 코드는 동일하나, 실제 호출되는 work 메서드가 다름
for worker in workers:
worker.work()
본 자료와 같이 IT 기술을 잘 정리하여, 온라인 강의로 제공하고 있습니다
체계적으로 전문가 레벨까지 익힐 수 있도록 온라인 강의 로드맵을 제공합니다
초간단 연습10
* 요정(Elf), 파이터(Fighter) 클래스 만들기
- 이름을 입력받음 - Elf의 attack 메서드: 출력 "마법으로 공격합니다."
- Fighter의 attack 메서드: 출력 "주먹으로 공격합니다."
- 다음과 같이 객체 생성 후 반복문으로 공격
* 요정(Elf), 파이터(Fighter) 클래스 만들기
- 이름을 입력받음 - Elf의 attack 메서드: 출력 "마법으로 공격합니다."
- Fighter의 attack 메서드: 출력 "주먹으로 공격합니다."
- 다음과 같이 객체 생성 후 반복문으로 공격
elf1 = Elf('Dave') fighter1 = Fighter('Anthony') ourteam = [elf1, fighter1] for attacker in ourteam: attacker.attack()
In [213]:
class Elf:
def __init__(self, name):
self.name = name
def attack(self):
print ("마법으로 공격합니다.")
class Fighter:
def __init__(self, name):
self.name = name
def attack(self):
print ("주먹으로 공격합니다.")
elf1 = Elf('Dave')
fighter1 = Fighter('Anthony')
ourteam = [elf1, fighter1]
for attacker in ourteam:
attacker.attack()