간단한 동작을 확인하거나 테스트를 하기 위해 작성할 때 클래스를 만들지 않아도 실행이 됩니다.
하지만 실제로 사용하기 위해 만든 프로그램에 처음부터 끝가지 하나의 파일에 작성하게 되면 에러가 발생하거나 수정 또는 추가 기능을 만들 때 효율적이지 못합니다.
오브젝트 지향 언어인 파이썬에서도 클래스와 오브젝트를 활용해 작성하는 것이 좋습니다.
작성 방법과 예제를 간단하게 보겠습니다.
class
클래스 예제
class Spam:
val = 100
def ham(self):
self.egg('call method')
def egg(self,msg):
print("{0}".format(msg))
print(("{0}".format(self.val)))
spam = Spam()
spam.ham()
결과
call method
100
파이썬에서 클래스는 class 클래스명: 으로 작성합니다.
클래스명을 지정할 때는 대문자로 시작해야 합니다.
들여 쓰기는 파이썬의 기본적인 규칙이니 다들 아시겠지만 클래스 변수와 클래스 안에 작성하고 싶은 함수는 들여 쓰기로 구분을 합니다.
인스턴스는 오브젝트 = 클래스()로 생성합니다.
메서드는 오브젝트.메서드()로 호출할 수 있습니다.
위 내용을 위에서 작성한 예제에 해당하는 부분을 찾아서 보면 다음과 같습니다.
인스턴스를 생성하는 부분은 spam = Spam() 이 해당됩니다.
작성한 오브젝트 메서드를 호출하는 부분은 spam.ham()이 되겠습니다.
호출한 메서드인 ham에서는 자신 오브젝트인 egg를 self.egg()로 호출하고 있습니다.
그리고 egg 메서드는 출력을 하기 위해 변수 val을 호출하고 있습니다.
여기서 중요한 부분은 메서드를 호출하는 spam.ham()입니다.
메서드를 선언한 def ham에는 self 라는 파라미터를 하나 지정해놨지만 호출하는 부분에서는 파라미터를 설정하지 않고 실행하고 있습니다.
파이썬에서는 메서드를 선언하게 되면 최소 1개의 파라미터를 가져야 합니다.
그리고 그 파라미터는 반드시 self라고 지정해 줘야 하는 규칙이 있습니다.
self를 사용하게 되면 오브젝트는 자신의 변수를 취득하거나 메서드를 호출할 수 있게 됩니다.
하지만 예제에서 볼 수 있듯이 호출하는 곳에서는 파라미터를 지정해 주지 않아도 됩니다.
파이썬에서 자동으로 첫 번째 인수인 self는 전달을 하기 때문입니다.
Java로 보면 this에 해당됩니다.
생성자 constructor
인스턴스를 생성할 때 가장 처음 호출되는 함수를 생성자(constructor)라고 합니다.
대부분 초기화 등을 여기서 하게 됩니다.
생성자는 함수는 __init__() 로 정의해야 합니다.
생성자 예제
class Spam:
def __init__(self,ham,egg):
self.ham = ham
self.egg = egg
def output(self):
sum = self.ham + self.egg
print("{0}".format(sum))
spam = Spam(5,10)
spam.output()
결과
15
생성자 함수의 첫 번째 파라미터도 self입니다.
파라미터를 추가하고 싶은 경우에는 self 뒤에 나열해 주면 됩니다.
기본적인 클래스 사용법을 확인했습니다.
클래스 상속에 대해서는 다음에 확인하도록 하겠습니다.
댓글