(*이 시리즈의 내용은 모두 '인공지능 100점을 위한 파이썬 수학' 서적의 내용을 정리한 것입니다.)
- 클래스에서는 특정한 명령어들의 기능 집합과 함께 변수들까지 모아 패키지를 구분해 둔다.
- 클래스에 있는 변수를 필드(field)라고 부르고, 함수를 메서드(method)라고 부른다.
1. 객체란?
- 클래스를 사용해 만들어진다.(클래스는 틀, 객체는 틀에 부어 만들어지는 최종 제품)
- 클래스를 이용해 만들어지는 객체는 클래스가 가지고 있는 정보(변수)와 기능(함수)를 가지게 된다.
ex) 자동차 클래스를 이용해 '벤츠' 또는 'bmw'를 만든다. 코드를 예로 든다면,
benz = Car(50)
bmw = Car(60)
2. 클래스 생성
- 만들고자 하는 클래스에 필요한 기능을 변수로서 선언한다.
ex) 자동차 클래스에는 스피드, 연료, 모니터 기능, 가속기, 브레이크 등을 변수로 선언
class 클래스 이름:
변수1 ...
변수2 ...
def __init__(self, 인수, 인수2, ...):
...
def 클래스 함수1(self, 인수1, 인수2, ...):
...
def 클래스 함수2(self, 인수1, 인수2, ...):
...
- 클래스에는 정보를 저장하기 위한 변수와 기능을 구현하기 위한 함수가 포함된다.
- init() 함수는 클래스의 시작을 위한 함수이다.
3. init()
- 클래스를 이용해서 객체를 만들 때 초기 설정값을 전달하기 위해 사용하는 함수.
- 앞 뒤로 언더바(_)가 두개 들어간다.
- 예를들어 자동차 클래스를 만들 때, 초기 속도나 연료를 설정할 수 있다.
class Car:
def __init__(self, fuel):
self.fuel = fuel
self.speed = 0
4. self
- car 클래스로 benz 객체를 만들었을 때 benz 객체는 fuel과 speed 변수를 가지게된다.
- 클래스는 첫 번째 인자로 자기 자신을 가리키는 인자를 사용한다. 일반적으로 self를 사용.
- 객체 내부의 변수를 읽거나 쓸 때도 self를 사용.
class Car:
def __init__(self, fuel): #1. 생성자
self.fuel = fuel #2. self.fuel과 fuel은 다르다
self.speed = 0 #3. self.speed에 0을 저장
#1.
- 여기서 def init(self, fuel):는 클래스를 사용해서 객체를 만들 때 자동으로 실행되는 함수이다.
- 자동으로 실행되기 때문에 '생성자(constructer)'라고도 부른다.
- init() 함수가 실행될 때 self와 fuel이 필요하다.
- self는 init() 함수가 속한 객체 자신을 의미하고, fuel은 외부에서 가져오는 값이다.
- 즉 Car(5)로 클래스를 실행하면서 객체를 만들 때 ()안에 있는 5 값이 fuel에 들어간다.
#2.
- 등호 왼쪽에는 값을 저장할 메모리 공간의 이름이 들어가고, 오른쪽에는 메모리 공간에 들어갈 값이 위치한다.
- 즉, 왼쪽의 self.fuel은 변수의 이름이며, 오른쪽의 fuel은 실제 값이다.
- Car(5)를 수행하면서 fuel은 5 값을 인자값으로 가지게 되고, 등호의 오른쪽에 위치한다.
#3.
- self.speed의 self는 클래스를 이용해 만들 객체를 의미하고, 객체에 속한 speed라는 변수에 0을 저장하라는 뜻이다.
- '객체.변수'의 형태로 객체에 속한 정보를 읽거나 쓸 수 있다.
- '객체.함수()'의 형태로 객체에 속한 기능 함수를 실행한다.
코드를 조금 더 구체화 한다면,
class Car:
def __init()__(self, fuel):
self.fuel = fuel
self.speed = 0
print('fuel = ', fuel)
def show(self):
print('speed = ', self.speed, 'fuel = ', self.fuel)
def speed_up(self):
self.fuel = self.fuel - 1
self.speed = self.speed + 1
4. 객체 내부함수 실행
benz = Car(5) #1. 클래스로 객체 만들기
benz.speed_up() #2. 객체 benz 안의 speed_up() 함수 실행
benz.show() #3. 객체 benz 안의 show() 함수 실행
#1.
- 객체를 만들고 5 인수를 넣는다.
- init() 함수가 실행.
- self.fuel, 즉 benz.fuel에 5가 저장된다.
#2.
- benz 객체에 있는 speed_up() 함수를 실행하라는 의미.
- speed_up() 함수는 fuel을 1 줄이고, speed를 1 높이는 기능을 가지고 있다.
#3.
- benz에 있는 show() 함수를 실행한다.
- 객체가 가진 speed와 fuel, 즉 benz.fuel과 benz.speed를 화면에 출력한다.