본문 바로가기
Data Analytics with python/[Theory]

클래스(class)와 객체(object)와 인스턴스(instance) 구분

by 보끔밥0130 2022. 3. 1.
728x90

클래스는 객체를 정의하고 만들기 위한 변수와 메서드로 구성합니다.

 

클래스를 잘 설명하기 위해 주로 어떤 걸 계속 찍어내는 모형 틀에 비유합니다.

 

똑같은 일을 하는 걸 반복하기 쉽게 만들어 주기 때문입니다.

 

혹시, 붕어빵 타이쿤이라는 게임을 들어본 적이 있나요? (붕어빵을 반복적으로 만들어 파는 게임)

 

저는 클래스를 붕어빵을 계속 찍어주는 틀로 이해해보았습니다.

 

클래스(class) : 붕어빵틀, 객체(object) : 붕어빵, 인스턴스(instance) : 경로

 

붕어빵 틀로 찍어낸 여러 개의 붕어빵이 생기게 되고 각각 하나의 붕어빵은 객체입니다.

 

이런 붕어빵 틀로 만든 붕어빵은 서로 독립적입니다.

 

독립적이란 표현은 서로 영향을 미치지 않는다는 의미입니다.

 

하나의 붕어빵을 입에 베어 물어도 다른 붕어빵은 멀쩡하듯이 말입니다.

 

이 붕어빵을 보고 어떤 틀로 만들었는지 그 경로를 말해줄 수 있습니다.

 

인스턴스는 특정 객체가 어떤 클래스의 객체인지 객체와 클래스의 관계를 설명하기 위해 사용합니다.

 

파이썬 클래스의 가장 간단한 예를 통해 이해해보도록 합니다.

 

 [1]:
class FishShapedPastries:
    def cook(self):
        print("붕어빵을 굽습니다.")
In [2]:
a = FishShapedPastries()
b = FishShapedPastries()
In [3]:
a.cook()
 
붕어빵을 굽습니다.

➀ a와 b는 각각 객체입니다.

② a는 FishShapedPastries의 인스턴스입니다. 마찬가지로, b는 FishShapedPastries의 인스턴스입니다.

 

그리고 클래스 내에 생성자(constructor)와 메서드(method)에 대한 이해도 필요합니다.

생성자(constructor)는 객체가 생성될 때 자동으로 호출되는 메서드입니다.

생성자의 경우 객체에 초깃값을 설정해야 할 필요로 만들어진 메서드입니다.

메서드 이름이 __init__이면 이 메서드가 생성자임을 나타냅니다. 언더바(_) 2개를 양쪽으로 표현합니다.

 

메서드(method)는 클래스 안에 구현된 함수입니다.

메서드는 클래스에 포함되어 있다는 점을 제외하면 일반 함수랑 같습니다. 하지만 포함되어 있기 때문에 특별한 매개변수를 갖고 있습니다.

첫 번째 매개변수로 self라 지정합니다. 즉, 객체를 호출할 때 호출한 객체 자신이 전달함을 나타내는 파이썬만의 특징입니다.

 

In [11]:

class FishShapedPastries:
    def __init__(self):
        self.array = []
        print("붕어빵이 0개 입니다.")
    
    def cook(self, item):
        self.array.append(item)
        print("붕어빵을 {}개 굽습니다.".format(self.array) )
In [12]:
act1 = FishShapedPastries()
print(act1)
 
붕어빵이 0개 입니다.
<__main__.FishShapedPastries object at 0x000002663C2BC2B0>
In [13]:
act1.cook(10)
 
붕어빵을 [10]개 굽습니다.

 

출처 : https://wikidocs.net/28#_2

 

05-1 클래스

초보 개발자들에게 클래스(class)는 넘기 힘든 장벽과도 같은 존재이다. 독자들 중에도 클래스라는 단어를 처음 접하는 이들도 있을 것이다. 그러면 도대체 클래스가 무엇인지 ...

wikidocs.net

 
728x90

댓글