프로그래밍/Python

Class의 등장 1탄

seungdols 2014. 12. 31. 11:08

코드와 관련된 데이터는 한데 모으는게 좋습니다.


즉, 비슷한 기능을 하는 함수등을 하나로 모아서 관리하는 것은 프로그래밍에서 보통 말하는 유지보수성이 좋아진다고 말한다.


유지보수성이란?


특정한 기능의 수정사항, 향상들을 위해 코드를 수정하는데 얼마나 힘들이지 않고, 코드를 수정할 수 있느냐.

그런데 마구잡이로 구성이 되어있다면, 전체 코드를 손 봐야 한다는 것은 엄청 비효율적이라고 할 수 있습니다.


그래서 프로그래밍에서는 코드를 작성 할 때 항상 유지보수를 염두해 두어야 합니다


뭐.. 이렇게만 알고 넘어가죠!



그래서 파이썬에서도 클래스(Class)라는 것이 있는데, 프로그래밍을 해본 분들은 C++ , Java, C#에서 많이 보셨겠으나 


프로그래밍을 안해보셨다면, OOP라는 것이 생소합니다. 물론 파이썬은 OOP개념의 클래스가 있습니다.


클래스의 개념부터 설명드리자면 ( 읽고 넘어가셔도 되지만, 읽지 않으셔도 무방합니다.)


C 언어부터 설명을 해야 하는데 C와 같은 정적 바인딩 언어의 경우 (C++, Java, C#)등은 


변수 선언시 자료형을 미리 선언을 해주어야 합니다. 그래서 명확하죠. int a 는 정수형만을 담을 수 있습니다. 


정수형 여러개를 담으려면 int a[10] 즉, 배열을 선언해서 사용하면 됩니다. 


그럼 자료형이 여러개인 것을 가지려면???


그래서 나온 개념이 구조체라는 개념이고 이 구조체의 개념에 함수까지 포함한 것이 클래스입니다.


클래스는 코드와 데이터를 한데 묶는다!


클래스를 사용하면 복잡도를 줄일 수 있습니다.


복잡도가 줄어들면, 버그도 적어집니다.


버그가 적어지면, 유지보수도 쉬워집니다.


즉, 클래스를 사용하는 것이 좋다라고 할 수 있습니다. 


파이썬은 표준적인 객체 지향 프로그래밍(OOP)의 모델을 따르므로 코드와 코드가 처리 할 데이터를 클래스에 정의 할 방법을 제공합니다.


일단 클래스를 정의 하고 나면 클래스를 사용해서 데이터 객체(인스턴스)를 만들 수 있습니다.


OOP에서는 코드를 메서드 , 데이터를 속성, 데이터 객체를 인스턴스라고 말합니다.


클래스의 구조를 살펴 볼까요?




>>> class Test:
	def __init__(self):
		print ("class create")

		
>>> a = Test()
class create
>>> 

class는 키워드이며 그 뒤 Test는 클래스 이름입니다. 
그리고 클래스를 초기화 하는 함수 def __init__(self)를 정의합니다. 보통 생성자(Constructor)라고 합니다.
저는 출력문을 써주었으나, 보통 클래스에서 사용되는 변수들의 초기화를 담당합니다.

self가 말하는 것을 설명하기 전에 어떻게 객체가 만들어 지는지 알려드리겠습니다.

a = Test()를 호출하면 

사실은 Test.__init__(a) 이런 모습으로 호출되는 것과 같습니다.
def __init__(self): 함수가 실행 되는 것이죠!
타깃 식별자가 a 가되어 self 자리에 들어가게 됩니다. 그래서 객체 초기화를 하고 a에 해당 객체 정보가 담겨집니다.

즉, self는 중요합니다. 이유는 class에 정의된 메서드는 모든 객체에 의해 공유 되도록 설계가 됩니다. 그래서 self인자가 없다면, 파이썬은 메서드 호출을 어떤 객체에 적용해야 하는지 모릅니다.

그러면 에러가 나겠죠??

오늘은 여기까지만 알고 넘어가죠!


반응형

'프로그래밍 > Python' 카테고리의 다른 글

Class의 등장 3탄 상속??  (0) 2015.01.01
Class의 등장 2탄  (0) 2015.01.01
새로운 데이터 구조 딕셔너리(dictionary)  (0) 2014.12.31
중복 제거는 어떻게??? - 집합(set)  (0) 2014.12.29
지능형 리스트???  (0) 2014.12.29