[python](1)클래스와 객체 - 클래스의 필요성, 객체 vs 인스턴스

Jihwan Jung·2022년 7월 10일
1

🎺파이썬

목록 보기
2/5
post-thumbnail

🔔오늘 배울 내용


C언어 처럼 클래스가 없는 언어도 있습니다. 굳이 클래스를 쓰지 않아도 프로그램을 만들 수 있다는 뜻입니다. 하지만 클래스와 객체는 꽤 많은 이점이 있습니다.
클래스
객체
인스턴스

🔎클래스의 필요성


다양한 기능을 가진 스마트폰을 구현한다고 가정해봅시다. 파이썬의 함수를 이용하여 스마트폰의 기능을 구현할 수도 있지만, 그런 경우에는 불편한 점이 있습니다. 여러개의 스마트폰이 필요하다면 새로운 스마트폰을 또 함수로 구현해주어야 합니다. 100대 이상의 스마트폰이 필요하다면 개별적인 함수로 이들을 구현, 관리하는 건 쉬운 일이 아닙니다.

이런 상황에서, 스마트폰의 설계도 한장을 만들어 놓고 이를 통해 스마트폰을 만들어 보자는 개념이 클래스의 시작입니다.

스마트폰의 비유 말고도 쿠키와 쿠키 틀, 붕어빵과 붕어빵 틀 등 다양하게 비유할 수 있습니다.

즉, 비유의 핵심은 비슷한 기능과 쓰임을 가진 객체들을 빨리 여러개 만드는데 클래스가 필요하다는 것이고, 각각 독립적으로 작용하는 객체를 만들 수 있고 객체마다 조금씩 다를 수도 있다는게 핵심입니다.

🔎클래스와 객체


class Calculator:
	def __init__(self):
    self.result = 0
    
    def add(self, num):
    self.result += num
    return self.return

cal1 = Calculator()
cal2 = Calculator()

앞으로 차근차근 알아보겠지만, 상단의 코드는 'Calculator'라는 이름을 가진 계산기 설계도를 가지고 cal1, cal2라는 각각 독립적인 계산기를 만드는 과정을 담았습니다.

여기서 계산기의 설계도 = 클래스(class)
계산기의 설계도를 이용해 만든 계산기 = 객체(object)라고 이해할 수 있습니다.

설계도 = 클래스(class)
설계도로 만든 제품 = 객체(object)

클래스로 만든 객체는 고유한 성격을 가진다는 특성이 있습니다.

🔎클래스 구조


그렇다면 클래스를 어떻게 만들 수 있을까요? 매우 단순합니다.

class Calculator:
	pass

다음과 같이 class 뒤에 해당 클래스(설계도)의 이름을 적어주기만 하면 됩니다.
어떤 기능들을 구현할지 아직은 보류중이므로 pass 문법으로 마무리해줍니다.

🔎객체 생성


위 클래스는 아무것도 없는 클래스이지만 해당 클래스로부터 객체를 만들어봅시다. 클래스 이름과 무관하게 객체 또한 이름을 자유롭게 지정해줄 수 있습니다.

cal1 = Calculator()

🔎객체 vs 인스턴스


클래스로 만든 객체를 인스턴스라고 합니다. 객체와 인스턴스는 혼횽해서 쓰는 표현이지만 미묘하게 다른 차이가 있습니다. Calculator 클래스를 가지고 cal1을 만들었다면, cal1은 객체라고 말할 수 있습니다. 또한, cal1을 Calculator 클래스의 인스턴스라고 말할 수 있습니다. 즉, 인스턴스는 객체와 클래스의 관계를 더 직접적으로 밝혀주는 표현입니다. 또한 객체는 독립적인 개념으로써 클래스와 대비되는 표현임을 느낄 수 있습니다.

클래스(Class) : 객체지향 프로그래밍에서 특정 객체를 생성하기 위한 틀
객체(Object) : 클래스로부터 생성된 것.
인스턴스(Instance): 특정 클래스에서 생성된 객체, A클래스와 a인스턴스의 관계 위주

profile
22.10月~24.07月 공군 암호병 복무중/ 사회 과학과 딥 러닝에 관심이 있는 학부생(CS&E)입니다. 기술과 사회에 대한 이해를 바탕으로, 비즈니스 감각과 기술적 역량을 함께 갖춘 인공지능 프로그래머•데이터 과학자로 성장하고 싶습니다.

0개의 댓글