scii 2013. 5. 1. 20:41


파이썬의 클래스는 새로운 이름 공간을 지원하는 단위이다. 이 이름 공간에는 함수와 변수가 포함될 수 있다. 

모듈과 차이가 있다면, 모듈 파일 단위로 이름 공간을 구성하는 반면, 

클래스는 클래스 영역과 인스턴스 영역 내에 이름 공간을 구성한다. 상속 관계에서 상위클래스는 하위 클래스의 이름 공간에 포함된다.


클래스와 이름 공간

클래스 인스턴스도 이름 공간을 생성한다. 이것은 모듈에 없는 중요한 기능이다. 

클래스는 하나 이상의 인스턴스 객체를 생성하는 틀과 같다.


상속

모듈과의 중요한 차이점은, 클래스는 상속(Inheritance)이 된다는 것이다.

클래스는 다른 클래스와 공통적인 특징을 공유할 수 있으므로, 개별적인 특징만을 새로 정의하는 새로운 클래스를 만들 수 있다. 

즉, 재사용성이 있다.


연산자 중복

파이썬 클래스는 연산자 중복을 지원한다. 각종 산술, 논리, 슬라이싱, 인덱싱 등등의 연산을 중복할 수 있다.

연산자 중복이란, 어떤 연산자를 클래스 객체에서도 사용할 수 있게, 거기에 맞는 함수를 정의하는 것이다.



파이썬에서 클래스에 관련된 꼭 필요한 용어

 class  class 문으로 정의되며, 멤버와 메쏘드를 가지는 객체이다.
 class object

 클래스와 같은 의미로 사용. 클래스를 종종 특정한 대상을 가리키지 않고 일반적을 언급하기 위해서 사용하는 반면에, 클래스 객체는 어떤 클래스를 구체적으로 지정하기 위해서 사용하기도 한다. 

 class instance 

 클래스를 호출하여 만들어지는 객체 

 class instance object  

 클래스 인스턴스와 같은 의미이다. 인스턴스 객체라고 부르기도 한다. 

 member 

 클래스가 갖는 변수 

 method 

 클래스 내의 정의된 함수 

 attribute 

 멤버와 메쏘드 전체를 가리킨다. 즉, 이름 공간의 이름 전체를 의미한다. 

 super class 

 base class 라고 하기도 한다. 어떤 클래스의 상위에 있으며 각종 속성을 서브 클래스로 상속해 준다. 

 sub class 

 derived class 라고 하기도 한다. 슈퍼 클래스로부터 상속된 하위의 클래스를 말한다. 슈퍼 클래스로부터 각종 속성을 상속받으므로 코드와 변수를 공유한다. 



객체지향 프로그래밍에서 클래스들이 가지는 중요한 특성

 inheritance

 기존의 클래스의 속성과 행동을 그대로 받아들이고 추가적으로 필요한 기능을 새로운 클래스에 덧붙이는 것이다. 소프트웨어의 재사용 관점에서 상속은 대단히 중요한 역할을 하며, 프로그램의 개발 시간을 단축시켜 준다. 

 다른 프로그래밍 기법과 객체지향 프로그래밍을 구분하는 중요한 특징이다. A클래스를 슈퍼 클래스로 하는 클래스 B를 생성하였다면 "B is-a A" 관계라고 한다. 

 multiple inheritance 

 두 개 이상의 슈퍼 클래스로부터 상속받는 것. 

 polymorphism 

 상속 관계 내의 다른 클래스의 인스턴스들이 같은 멤버 함수 호출에 대해 각각 다르게 반응하도록 하는 기능. 

 encapsulation 

 메쏘드와 멤버를 클래스 내에 포함시키고 외부에서 접근 가능하도록 인터페이스만을 공개하고 다른 속성들을 내부에 숨기는 것. 

 composition 

 x라는 객체(혹은 다수의 객체)가 클래스 A안에 포함되어 A의 각종 메쏘드를 구현하는데 사용된다. 

 즉, 어떤 객체가 다른 객체에 포함되어 활용되는 것을 말한다. 이때 A가 x를 포함하므로 "has-a" 관계라고 한다.