본문 바로가기
Programming/Python

[Python] 다형성 (Polymorphism) (1)

by goatlab 2023. 6. 12.
728x90
반응형
SMALL

다형성 (Polymorphism)

 

 

변수, 객체 또는 메서드가 상황에 따라 다른 동작을 수행하는 것을 의미한다. 다형성은 아래와 같은 형태로 나타난다.

 

  1. Duck Typing
  2. Operator Overloading
  3. Method Overrloading
  4. Method Overriding

 

Duck Typing

 

‘오리처럼 걷고 오리처럼 말한다면 오리일 것이다’라는 원리를 따른다. 이는 객체의 클래스가 무엇인지는 상관하지 않고 해당 객체에 필요한 동작이 구현되어 있다면 작동한다는 것을 의미한다. 객체의 유형은 런타임에 구분된다.

 

Strong Typing

 

메서드에 전달된 객체가 호출하려는 메서드를 가지고 있는지 확인 가능하다. hasattr(object, attribute) 함수는 객체에 메서드 또는 변수가 있는지 확인하는데 사용한다. 여기서 속성은 메소드 또는 변수일 수 있다. 객체에서 찾으면 이 함수는 True를 반환하고 그렇지 않으면 False를 반환한다.

 

메서드 오버로딩 (Method Overloading)

 

같은 이름의 메서드가 같은 클래스에 둘 이상 있는 경우, 이를 메서드 오버로딩이라고 한다. Python에서 메서드가 둘 이상의 작업을 수행할 수 있도록 작성된 경우 메서드 오버로딩이라고 한다.

 

메서드 오버라이딩 (Method Overriding)

 

부모 클래스와 자식 클래스에서 메서드를 작성하면 부모 클래스의 메서드를 자식 클래스에서 사용할 수 없다. 이 경우 자식 클래스의 메서드만 사용 가능하며, 자식 클래스의 메서드가 부모 클래스의 메서드를 대체하게 된다. 메서드 오버라이딩은 기존 메서드의 동작을 수정하려는 프로그래머가 사용한다.

 

class Add:
    def result(self, a, b):
        print("Addition:", a + b)

class Multi(Add):
    def result(self, a, b):
        print("Multiplication:", a * b)

m = Multi()
m.result(10, 20)

 

 

728x90
반응형
LIST

'Programming > Python' 카테고리의 다른 글

[Python] 제네레이터 (Generator)  (0) 2023.06.16
[Python] 다형성 (Polymorphism) (2)  (0) 2023.06.15
[Python] 네임 스페이스 (Namespace)  (0) 2023.06.12
[Python] 상속 (Inheritance)  (0) 2023.06.09
[Python] 데이터 구조  (0) 2023.06.09