본문 바로가기
파이썬/파이썬 기본 문법

[파이썬] 클래스 Class

by Nov19 2018. 12. 11.
반응형


[파이썬] 클래스 Class


클래스(class)란 똑같은 무엇인가를 계속해서 만들어낼 수 있는 설계 도면 같은 것이고

객체(object)란 클래스에 의해서 만들어진 것을 뜻한다.

클래스에 의해서 만들어진 객체에는 중요한 특징이 있다

객체별로 독립적인 성격을 갖는다는 것이다


스타크래프트를 예로 들어보면 '마린'이라는 유닛을 계속 만들어 한 부대를 생성했다고 가정할 때,

생성된 마린들을 각각 독립적인 '객체'이다.

마린을 만들기 위해 작성한 것이 클래스이고 

클래스를 이용해 마린을 한 부대 만들었다면 그 마린 하나하나가 객체가 된다.


다음 스타크래프트 유닛클래스를 만들고 객체를 생성해 보자.

유닛은 공격력, 이동속도, 체력을 갖고 있다. 

공격할 수 있고, 이동할 수 있다.

여기서 공격력, 이동속도, 체력은 유닛의 속성이고

공격하다와 이동하다는 유닛이 가진 기능이다.

self는 클래스에서 자기 자신을 지칭한다. 

self.xxx 는 클래스의 xxx 속성을 사용할 때 쓴다.

메서드의 첫번째 파라미터는 자기 자신을 가리키는 인자이다. 꼭 self가 아니어도 되지만 관례상 self로

클래스에서 메서드의 첫번째 파라미터 self를 명시적으로 꼭 입력해야 한다!


클래스를 만들고 객체를 생성했다.

객체를 생성할 때는 객체명 = 클래스명()

__init__() 함수는 객체를 생성할 때 자동으로 호출된다. 

보통 객체의 속성이나 설정을 초기화 할 때 쓴다.

__init__()함수에서 받는 인자를 객체를 생성할 때도 써야한다.

그러므로 위에서 scv라는 unit객체 하나를 생성할 때 

scv = unit(5, 10, 60) 이라는 인자를 써준 것이다.


클래스의 상속

상속(Inheritance)이란 "물려받다"라는 뜻이다. 클래스에도 이런 개념을 적용할 수가 있다

어떤 클래스를 만들 때 다른 클래스의 속성과 기능을 물려받을 수 있게 만드는 것이다.

보통 상속은 기존 클래스를 변경하지 않고 기능을 추가하거나 기존 기능을 변경하려고 할 때 사용한다.

클래스를 상속하기 위해서는 다음처럼 클래스명 뒤 괄호 안에 상속할 클래스명을 넣어 주면 된다.

class 클래스명(상속할 클래스명)



unit 클래스를 상속받아 marine 클래스를 작성했다. marine 클래스는 속성을 따로 지정하지 않았고, 공격이나 이동의 기능이 없지만 그 기능을 사용할 수 있다. 이는 unit클래스가 갖고 있는 기능을 그대로 상속 받았기 때문에 따로 쓰지 않아도 marine객체에서 사용이 가능한 것이다. 이외 따로 쓰고 싶은 기능이 있다면 추가해서 작성해주면 된다. 

위의 stimpacks() 기능을 추가했다. 이는 scv객체에는 없는 기능이고 marine이라는 객체에만 존재하는 기능이다. 


메서드 오버라이딩(Overriding, 덮어쓰기)

부모 클래스(상속한 클래스)에 있는 메서드를 동일한 이름으로 다시 만드는 것

이렇게 메서드를 오버라이딩하면 부모 클래스의 메서드 대신 오버라이딩한 메서드가 호출된다.


Unit 클래스에도 moving()이 있고 이를 상속한 marine클래스에도 moving()이 있다. 같은 이름의 함수는 상속받은 클래스에서 부모 클래스의 함수를 덮어쓰는 효과를 가져와 자신이 재정의 한 함수를 사용하게 된다.



반응형

댓글