클래스 (Class) 란?
클래스는 새로운 이름 공간을 지원하는 단위, 안에 함수와 변수가 포함될 수 있다.
사실 파이썬의 모든 자료형은 모두 클래스이다.
ex. int, float
클래스 안에 함수를 정의할 수 있는데, 이를 '메소드'라고 한다. 즉, 메소드도 함수의 일종이지만 클래스 안에서 구현된 함수이다. 문법은 사용자 정의 함수를 정의하는 것과 동일하다. 다른 점이 있다면 메소드의 첫 번째 인수는 반드시 해당 클래스의 인스턴스 객체이어야 한다는 것이다. 관례로 우리는 self란 이름으로 첫 번째 인수로 선언한다.
class MyClass:
def apple(self, v):
self.value = v
def get(self):
return self.value
더불어 파이썬에서 전역 변수와 지역 변수가 있는데, 이를 헷갈리지 않게 하기 위해 self.value 로 value 라는 변수를 지정해주었다.
클래스를 정의하는 것은 새로운 자료형을 하나 만드는 것이고, 인스턴스는 이 자료형의 객체를 생성하는 것이다.
클래스 안에 있는 메소드나 변수를 사용하기 위해서는 무조건 인스턴스를 만들고 '인스턴스.ㅇㅇ' 의 형식으로 불러와야 한다.
c = MyClass() #인스턴스 객체 만들기
c.set('egg') #c의 인스턴스 객체가 self로 전달되어 두 번째 인수부터 입력하면 됨
그러나 메소드를 실행할 때 인스턴스.메소드() 형식으로 호출하지 않는 방식이 있다.
바로 인스턴스를 생성할 때 동시에 메소드가 실행되도록 하는 것이다. 이를 생성자 메소드, initializer 라고 부른다.
생성자 함수: __init__
생성자는 인스턴스/객체가 생성될 때 변수에 초기값을 할당하거나, 제일 먼저 실행되어야 하는 명령문을 기술하기 위해 사용 되는 특수한 메소드이다.
class Food:
def __init__(self, name, year): # 생성자 함수 Generator
self.name = name
self.year = year
def expiry_date(self):
print('만기 연도는 ' + str(self.year))
food_1 = Food('Pizza', 2018) # 인스턴스/객체를 만드는 동시에 생성자 함수가 실행됨!!
food_1.expiry_date() # 만기 연도는 2018
반대로 소멸될 때 자동으로 호출되는 메서드를 소멸자(Destructor)라고 부른다. 소멸자는 인스턴스 객체에서 사용하고서 메모리에 제거될 때 자동으로 호출된다.
소멸자 함수: __del__
다음의 글을 참고하였다.
"클래스가 object 를 상속받는 경우"
[Python] 클래스가 object를 상속받는 경우
Introduction 남의 파이썬 코드를 보다 보면, 종종 다음과 같은 형태의 클래스 선언과 마주하게 된다. class MyClass(object): # blah blah... 일단은 해당 라인만 보면 내가 선언한 클래스가 object 클래스를 상.
jh-bk.tistory.com
마지막으로 @property 와 getter, setter 에 대해 알아볼 것인데...