클래스와 객체

yoon·2021년 9월 30일
0

(*이 시리즈의 내용은 모두 '인공지능 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를 화면에 출력한다.
profile
공부하자

0개의 댓글