본문 바로가기

IT관련/파이썬

파이썬 공부하기 8 - class(클래스) 초기화 및 구조

함수를 관리함에 있어 한 페이지에 모든 함수를 정의하는 것은 효율적이지가 못하다.

 

그래서 필요한 함수들을 여러 클래스로 나누어 만든 다음

 

필요한 기능을 상황에 맞춰 불러와 적재적소에 맞게 사용하는 것이

 

사용함에 있어서도, 관리함에 있어서도 좋을 것이다.


클래스의 기본 구조는 아래와 같다.

class 클래스명:
	def __init__(self):
    	초기화
      
	def ... 추가 필요함수

파이썬의 경우 초기화를 def __init__(self) 함수를 통해 할 수 있다.

 

또한 매개변수 제일 앞에는 self를 넣어야하는데

 

사용하는 매개변수가 없더라도 메서드 매개변수에는 self를 고정적으로 넣어야만 한다.

 

아래는 클래스를 초기화하여 사용하는 예제이다

class CalcEx:
    def __init__(self,a,b):
        self.a = a
        self.b = b

자바에의 변수 초기화는 생성자를 만들어 this. 변수 = 변수; 로 할당 하지만

파이썬은 __init__(slef, 변수)를 생성하여 self. 변수 = 변수와 같이 할당한다


초기화가 잘 진행되었는지 확인을 해야 하니 기능을 만들어 준다.

    def plus(self):
        result = self.a + self.b
        return result

    def minus(self):
        return self.a - self.b

위의 두 개의 함수에는 매개변수가 self 뿐이다

 

추가로 받고 싶은 매개변수가 있다면 self 뒤에 추가해주면 된다.

 

하지만 초기화할 때 값만 사용한다면 위와 같이 사용할 수 있다.

 

만들어진 클래스를 사용하고 싶을 때는 import 하여 가져 올 수 있다


아래는 임포트 기본 구조이다.

from 클래스파일명 import 클래스명

클래스 파일명을 사용할 때에는 확장자를 쓰지 않도록 주의하자

ex) ClassEx.py -->  X ,  ClassEx --> O


클래스를 불러왔다면 클래스에서 정의한 함수들을 사용할 수 있다.

a = CalcEx(1,1)

print(a.plus())
>>> 2
print(a.minus())
>>> 0

자바에서는 new로 객체를 생성하지만 파이썬은 new가 필요 없이

 

변수에다가 바로  class를 참조시킬 수 있다.

 

메서드를 사용할 때 () 괄호를 사용해야 하는데 가끔가다가 오랜만에 쓰면 까먹곤 한다

 

이런 실수는 하지 말도록 하자

 

파이썬에서는 매개변수에 self를 사용하기 때문에 클래스. 메서드에 참조 객체를 넣어 값을 확인할 수도 있다.

    def printOut(self):
        print("a 변수 값 : {0} b 변수 값 : {1}".format(self.a, self.b))

클래스에 들어가 있는 a, b 변수 값을 확인하기 위해 print 문구 추가

CalcEx.printOut(a)
>>> a 변수 값 : 1 b 변수 값 : 1

클래스명. 메서드(참조 변수)를 사용하여 참조 변수의 a와 b의 값을 확인할 수 있다.

 

그리고 아직 메서드가 완성되지 않았거나 구상 중이라면 pass를 사용하여 아무런 기능이 없는 함수 또한 만들 수 있다

    def multi(self):
        pass

위와 같이 pass를 사용할 경우 메서드는 사용할 수 있지만 사용한다 해도 아무런 영향이 없다.


그리고 마지막으로 파이썬은 오버 로딩을 지원하지 않는다.

    def multi(self):
        pass

    def multi(self,c,d):
        pass

오버 로딩이랑 함수명이 같고 매개변수의 타입이나 개수, 타입 순서가 다를 시

같은 함수명으로 만들 수 있는 것을 말하는 데

 

파이썬의 경우는 함수명이 같으면 바로 에러가 떨어진다.