[Python] 클래스와 상속

개발log·2024년 2월 23일
0

Python

목록 보기
6/17
post-thumbnail

클래스

  • 클래스의 매개변수와 호출할 시의 매개변수는 같아야 한다(아니면 에러).
  • 멤버변수: 클래스 내에서 생성된 변수
  • __init__은 기본 생성자
  • self는 자기 자신, 자기 자신을 통해서 변수에 접근
class Unit:
    def __init__(self, name, hp, damage):
        self.name = name
        self.hp = hp
        self.damage = damage
        print(self.name, self.hp, self.damage, sep=", ")

marine1 = Unit("마린", 100, 50)

## 결과
마린, 100, 50

상속

class Unit:
    def __init__(self, name, hp):
        self.name = name
        self.hp = hp

# Utit을 상속
class AttackUnit(Unit):
    def __init__(self, name, hp, damage):
        Unit.__init__(self, name, hp) #부모 요소 호출
        self.damage = damage

    def attack(self, location):
        print(location)

다중 상속

  • 다중 상속 가능
  • 다중 상속 시 상속하는 클래스들의 생성자를 작성하여 호출
# 다중상속(AttackUnit, Fly)
class FlyAttackUnit(AttackUnit, Fly):
    def __init__(self, name, hp, damage, fly): #현재 클래스 생성자
        AttackUnit.__init__(self, name, hp, damage) #AttackUnit 클래스 생성자
        Fly.__init__(self, fly) #Fly 클래스 생성자

super

super를 사용하여 부모 생성자를 호출

class AttackUnit(Unit):
    def __init__(self, name, hp, damage):
        super().__init__(name, hp) #부모 요소 호출(super)
        self.damage = damage

다중 상속

class FlyableUnit(Flyable, Unit):# 순서에 따라 호출 다름
    def __init__(self):
        super().__init__()

dropship = FlyableUnit()

## 결과
#Flyable 생성자

모든 부모 클래스에서 초기화가 필요하다면

class FlyableUnit(Flyable, Unit):
    def __init__(self):
        Unit.__init__(self)
        Flyable.__init__(self)
        
## 결과
Unit 생성자
Flyable 생성자

pass

  • 함수가 완성되지 않아도 넘어감
class FlyAttackUnit(Unit):
    def __init__(self, name, hp, damage):
        pass
profile
나의 개발 저장소

0개의 댓글