➜ 문자열 | 슬라이싱, 문자열처리함수, 문자열포맷, 탈출문자
➜ 자료구조 | 리스트(List), 튜플(Tuple), 딕셔너리(Dictionary),
집합(Set), 자료구조 변환
➜ 반복문 | 조건문(if, elif, else), 반복문(for, while), 리스트
컴프리헨션(List Comprehension)
➜ 함수 | def, 전역변수&지역변수, 기본값&키워드인자, 가변인자
➜ 파일입출력, 출력조절, 파일 불러오기 및 읽기, 피클(pickle)
➜ 클래스(Class), __init__, 멤버변수, 메소드
➜ 상속(Inheritance), 다중상속(Multiple Inheritance)
➜ 메소드 오버라이딩, pass, super
➜ 예외 처리, 에러 발생시키기, 사용자 정의 에러, finally
➜ 내장함수, 메서드 총정리(문자열, 리스트, 딕셔너리)
메소드 오버라이딩(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의 생성자를 호출한다.
'Python' 카테고리의 다른 글
[Python/파이썬] 예외 처리, 에러 발생시키기, 사용자 정의 에러, finally (0) | 2023.08.22 |
---|---|
[Python/파이썬] 상속(Inheritance), 다중상속(Multiple Inheritance) (0) | 2023.08.15 |
[Python/파이썬] 클래스(Class), __init__, 멤버변수, 메소드 (0) | 2023.08.09 |
[Python/파이썬] 출력조절, 파일입출력, 파일 불러오기 및 읽기, 피클(pickle) (0) | 2023.08.06 |
[Python/파이썬] 함수 | def, 전역변수&지역변수, 기본값&키워드인자, 가변인자 (0) | 2023.08.04 |