본문 바로가기

Python

[Python/파이썬] 메소드 오버라이딩, pass, super

반응형

 

 

 

토글

 

 

 

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

- 메소드 오버라이딩은 자식 클래스에서 부모 클래스의 메소드를 재정의하는 것을 뜻한다.

- 부모 클래스의 기능을 그대로 상속 받되, 자식 클래스에 맞게 일부 기능을 수정하거나 추가할 수 있다.

# 공중 공격 유닛 클래스
class FlyableAttackUnit(AttackUnit, Flyable):
    def __init__(self, name, hp, damage, flying_speed):
        AttackUnit.__init__(self, name, hp, 0, damage)
        Flyable.__init__(self, flying_speed)

    def move(self, location):
        print("[공중 유닛 이동]")
        self.fly(self.name, location)

 

위의 코드에서 FlyableAttackUnit 클래스는 부모 클래스 AttackUnit의 `move` 메소드를 오버라이딩 한다.

즉, 공중 유닛의 이동 방식을 그에 맞게 변경한 것이다.

 

- 메소드 오버라이딩은 상속 관계의 부모 클래스와 자식 클래스에서 발생한다.
- 자식 클래스에서 부모 클래스의 메소드를 같은 이름으로 재정의하여 사용하는 것이다.
- 이를 통해 부모 클래스의 기능을 그대로 사용하면서 필요할 경우 자식 클래스에 맞게 기능을 수정하거나 확장할 수 있다.

 

 

 

 

메소드 오버로딩(Method Overloading)

- 메소드 오버로딩은 하나의 클래스에서 같은 이름의 메소드를 여러 개 정의하되, 매개변수의 수 또는 타입이 다른 기능을 가진 메소드를 정의하는 것을 뜻한다.

- 파이썬에서는 메소드 오버로딩을 지원하지 않지만, 기본값을 가진 인자(default arguments)와 가변 인자(variable-length argument)를 사용하여 비슷한 기능을 구현할 수 있다.

반응형
class MyClass:
    def my_method(self, arg1, arg2=None):
        if arg2 is None:
            print("첫 번째 메소드")
        else:
            print("두 번째 메소드")

 

위 코드에서 my_method는 메소드 오버로딩과 유사한 역할을 한다.

인자를 하나만 전달하면 첫 번째 메소드를 호출하고, 두 개의 인자를 전달하면 두 번째 메소드를 호출한다.

 

 

 


 

pass

- pass 문은 파이썬에서 아무 동작도 수행하지 않는 문이다.

- 클래스 구현 시 일시적으로 빈 메소드나 빈 코드 블록을 만들어줄 때 사용한다.

class BuildingUnit(Unit):
    def __init__(self, name, hp, location):
        pass

 

위 코드에서 BuildingUnit 클래스의 __init__ 메소드는 빈 메소드로 구현되어 있다.

이는 나중에 해당 메소드를 추가하거나 수정할 예정임을 표시해준다.

 

 


 

super

- super 함수는 자식 클래스에서 부모 클래스의 메소드를 호출할 때 사용된다.

- 주로 __init__ 메소드 내에서 부모 클래스의 생성자를 호출할 때 사용한다.

- 다중 상속 시, 첫 번째로 상속받은 클래스의 메소드만 호출되므로 주의해야 한다.

class FlyableUnit(Unit, Flyable):
    def __init__(self):
        super().__init__()  # 다중 상속 시 첫 번째로 상속받은 클래스만 호출되며, 그 외에 다른 클래스의 생성자를 호출하려면 명시적으로 호출해야합니다.
        # Unit.__init__(self)
        # Flyable.__init__(self)

 

위의 코드에서 FlyableUnit 클래스는 super 함수를 사용하여 부모 클래스 Unit의 생성자를 호출한다.

 

 

 

 

 

반응형