지 구 여 행

[나도코딩 필기노트] 파이썬 기본편 강의 (5) 본문

필기노트/나도코딩

[나도코딩 필기노트] 파이썬 기본편 강의 (5)

COSMOSUNION 2022. 6. 3. 23:36

 

 

⊙ 클래스(Class) :

하나의 틀 / 서로 연관이 있는 변수와 함수의 집합  예) 붕어빵 틀=Class(클래스) / 붕어빵 하나=Object(객체)

클래스를 통해 생성되는 객체 = 인스턴스(instance)

예제1)

 

예제2)

 

 

⊙ __init__() : 

'인스턴스'가 생성될 때 = 클래스가 실행될 때, 반드시 맨 처음 호출되는 특수 함수 (how Class initiates)

반드시 첫번째 인수로 self를 지정 → 함수값을 멤버변수와 함께 외부에서도 사용 가능케 함

 

 

⊙ 멤버변수 :

 클래스 내 정의된 변수 → 클래스 외부에서 변수가 확장되어 사용가능

예) self.name , self.hp, self.damage

 

 

⊙ (인스턴스)메소드 :

예) def attack() 또는 def attacked()등

클래스 내 선언된 메소드는 클래스 내 '(인스턴스) 메소드'로 취급

첫번째 매개변수는 항상 self 

+) 추후 알아볼 개념 : 정적(static)메소드 / 클래스(class)메소드 

 

⊙ 상속(inheritance) : 

다른 클래스에서 중복 사용되는 코드 → 상속(inheritance)를 통해 변수값 치환가능

예)

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

class Machinery(Unit):
    def __init__(self,name,hp,damage):
        Unit.__init__(self,name,hp)  # 다른 클래스로부터 '상속'을 통해 변수값 받을 때는 처음에 변수를 선언해준다.
        self.damage=damage
        print("\n{} 유닛이 생성되었습니다.".format(self.name))
        print("체력(hp) : {}, 공격력(damage) :{}".format(self.hp,self.damage))

 

 

⊙ 다중 상속(multiple inheritance) : 

2개 이상의 클래스로부터 변수값을 상속받는 경우

예)

class combatplane(Machinery,Flyable):
    def __init__(self,name,hp,damage,speedrate):
        Machinery.__init__(self,name,hp,damage) # 각 클래스마다 불러오는 변수값 선언
        Flyable.__init__(self,speedrate)
        print("\n{} 유닛이 생성되었습니다.".format(self.name))
        print("체력(hp) : {},공격력(damage) : {},비행속도(speed rate) : {}".format(self.hp,self.damage,self.speedrate))

 

 

⊙ 메소드 오버라이딩(method overiding) : 

상속받은 부모 클래스의 메소드를 재정의하여 사용하는 것

=(부모의 메소드가 아닌) 자식의 메소드를 쓰고 싶을 때, 메소드를 새롭게 정의해서 사용 가능

= 클래스 내 메소드 사용시, 기존 메소드 무시하고 같은 이름(move())의 새로운 메소드로 초기화 

 

예)

지상 유닛의 이동 커맨드 메소드 = move

공중 유닛의 이동 커맨드 메소드 = fly

→ 매번 지상or공중 유닛인지 체크 비효율적 → 'move' 메소드 하나로 메소드 오버라이딩을 통해 통일

 

 

 

 

※ 출처 : https://youtu.be/kWiCuklohdY

 

 

Comments