➜ 문자열 | 슬라이싱, 문자열처리함수, 문자열포맷, 탈출문자
➜ 자료구조 | 리스트(List), 튜플(Tuple), 딕셔너리(Dictionary),
집합(Set), 자료구조 변환
➜ 반복문 | 조건문(if, elif, else), 반복문(for, while), 리스트
컴프리헨션(List Comprehension)
➜ 함수 | def, 전역변수&지역변수, 기본값&키워드인자, 가변인자
➜ 파일입출력, 출력조절, 파일 불러오기 및 읽기, 피클(pickle)
➜ 클래스(Class), __init__, 멤버변수, 메소드
➜ 상속(Inheritance), 다중상속(Multiple Inheritance)
➜ 메소드 오버라이딩, pass, super
➜ 예외 처리, 에러 발생시키기, 사용자 정의 에러, finally
➜ 내장함수, 메서드 총정리(문자열, 리스트, 딕셔너리)
상속(Inheritance)
상속은 기존 클래스(부모 클래스)의 속성과 메소드를 새로운 클래스(자식 클래스)에게 전달하는 프로세스이다.
이러한 방식으로 코드를 재사용하고 관계를 구축할 수 있다.
1. 코드 재사용(Reusability)
: 상속을 통해 부모 클래스의 코드를 자식 클래스에서 재사용한다. 이런 특성 덕분에 중복된 코드 작성을 최소화함으로써 프로그램의 크기와 복잡성을 줄일 수 있다.
2. 모듈화(Modularity)
: 부모 클래스와 자식 클래스는 서로 독립적으로 작성, 수정 및 테스트될 수 있다. 이를 통해 코드의 유지보수가 간편해진다.
3. 계층적 구조(Hierarchical Structure)
: 관련된 클래스들은 계층적 구조로 구성될 수 있다. 그 결과 상위 클래스에는 일반적인 기능들이 모여 있으며 하위 클래스별로 기능을 확장해갈 수 있다.
# 일반 유닛 클래스
class Unit:
def __init__(self, name, hp):
self.name = name
self.hp = hp
# 공격 유닛 클래스, 일반 유닛 클래스를 상속받음
class AttackUnit(Unit):
def __init__(self, name, hp, damage):
Unit.__init__(self, name, hp)
self.damage = damage
위의 코드에서 공격 유닛 클래스 AttackUnit은 일반 유닛 클래스 Unit을 상속받아 정의되었다.
이를 통해 AttackUnit 입장에서 Unit의 모든 속성과 메소드에 자유롭게 접근 가능하다.
다중상속(Multiple Inheritance)
다중상속은 한 클래스가 두 개 이상의 부모 클래스로부터 속성과 메소드를 동시에 상속받는 것을 뜻한다.
1. 다양한 조합의 클래스 생성
: 다중상속을 통해 여러 부모 클래스들의 특징을 합하여 새로운 클래스를 생성할 수 있다.
2. 코드의 간결성
: 다중상속을 사용하여 복잡한 기능도 여러 부모 클래스로 분할함으로써 코드의 가독성과 이해도를 높일 수 있다.
# 날 수 있는 기능을 가진 클래스
class Flyable:
def __init__(self, flying_speed):
self.flying_speed = flying_speed
def fly(self, name, location):
print(
"{0} : {1} 방향으로 날아갑니다. [속도 {2}]".format(name, location, self.flying_speed)
)
# 공중 공격 유닛 클래스, 공격 유닛 클래스와 날 수 있는 기능 클래스를 다중상속
class FlyableAttackUnit(AttackUnit, Flyable):
def __init__(self, name, hp, damage, flying_speed):
AttackUnit.__init__(self, name, hp, damage)
Flyable.__init__(self, flying_speed)
위의 코드에서는 공중 공격 유닛 클래스 FlyableAttackUnit이 AttackUnit과 Flyable 클래스를
동시에 상속함으로써 다중상속을 구현한다.
이를 통해 FlyableAttackUnit은 두 부모 클래스의 속성과 메소드를 모두 갖게 된다.
'Python' 카테고리의 다른 글
[Python/파이썬] 예외 처리, 에러 발생시키기, 사용자 정의 에러, finally (0) | 2023.08.22 |
---|---|
[Python/파이썬] 메소드 오버라이딩, pass, super (0) | 2023.08.17 |
[Python/파이썬] 클래스(Class), __init__, 멤버변수, 메소드 (0) | 2023.08.09 |
[Python/파이썬] 출력조절, 파일입출력, 파일 불러오기 및 읽기, 피클(pickle) (0) | 2023.08.06 |
[Python/파이썬] 함수 | def, 전역변수&지역변수, 기본값&키워드인자, 가변인자 (0) | 2023.08.04 |