#1 class 키워드
class 키워드로 필요한 자료형을 만든다. 클래스는 헤더와 본체로 나뉜다.
#2 헤더
헤더에는 class 키워드와 자료형의 이름이 들어간다. 자료형의 이름은 케멀 케이스로 표현한다.
# 클래스 헤더
class MyInt: # 클래스 키워드와 자료형의 이름
#3 본체
클래스의 본체는 데이터속성과 메서드로 구성된다.
메서드
메서드는 일반 메서드와 특별한 메서드가 존재한다. 메서드 모두 다른 함수들처럼 def를 사용하여 정의한다.
class MyInt:
# 메서드 정의
def __init__(self, value):
self.value = value
def add(self, a):
self.value = self.value + a
메서드는 일반 메서드와 특별한 메서드가 있다. 특별한 메서드는 __init__()
처럼 메서드 이름의 앞뒤에 더블언더스코어가 있다. 이러한 메서드들을 던더메서드, 매직메서드라고 한다. 던더메서드는 특별한 용도가 정해져 있기 때문에 던더를 통해 별도로 표기한 것이다. 예를 들어 __init__()
은 객체를 생성할 때 사용하는 메서드다.
class MyInt:
# 던더 메서드
def __init__(self, value):
self.value = value
self 변수
self 변수는 생성 된 객체의 주소를 담는 변수다. 객체가 메서드 실행 시 메서드는 self를 통해 메서드를 호출한 객체의 주소를 참조한다. 일반 함수와는 다르게 모든 메서드는 정의 시 매개변수의 첫자리에 self 변수를 넣어야한다.
def __init__(self, value): # self 변수
self.value = value
def add(self, a): # self 변수
self.value = self.value + a
데이터 속성
데이터 속성은 클래스 변수와 인스턴스 변수가 있다.
인스턴스 변수
인스턴스 변수는 객체마다 갖는 변수다. 동일한 클래스라도 서로 다른 객체라면 인스턴스 변수도 이름이 같을지라도 실질적으로는 다른 변수다. 인스턴스 변수는 init을 통해 초기화한다.
def __init__(self, value):
self.value = value # 인스턴스 변수 self.value 초기화