class와 instance (느낌표 생각해보기)

yuns_u·2021년 10월 22일
0

클래스, 객체, 인스턴스

파이썬을 pythonic하게 사용하기 위해서 알아야하는 것으로 클래스(class)와 객체(object)에 대해 잘 알아야한다.

Class와 Object

클래스는 붕어빵틀처럼 같은 것을 만들어낼 수 있는 틀같은 것이다.
객체는 이러한 클래스에 의해 만들어진 실체이다. 붕어빵인 것이다.

클래스에 의해 만들어진 객체는 객체별로 독립적이다.

같은 붕어빵틀에서 만들어진 붕어빵들 중 한 개의 꼬리를 먹었다고해도 다른 붕어빵도 꼬리가 없어지지 않는다.

❗️ .copy를 한 결과나 deepcopy와 어떻게 다른지 생각해보면 좋을 것 같다. (나중에 공부하기)

object vs instance

클래스에 의해 만들어진 객체를 instance(인스턴스)라고도 부른다.
그렇다면 객체와 인스턴스의 차이에 대해 생각해봐야한다.

인스턴스는 특정 객체가 어떤 클래스의 객체인지를 관계 위주로 설명할 때 쓰인다.
클래스와 구체적인 객체 사이의 관계에 주목하면 인스턴스라는 용어를 쓴다.

자동차라는 클래스가 있고 자동차의 일종인 승용차가 있을 때 승용차는 자동차의 객체라는 표현보다 승용차는자동차의 인스턴스라는 표현이 더 적합하다. 자동차(클래스)와 승용차(특정한 객체)의 관계에 초점을 맞춘 설명이기 때문이다.

객체는 프로그램에서 구현해야하는 대상으로 클래스의 정의대로 만들어진 실체이다.
인스턴스는 그러한 클래스를 바탕으로 프로그램에서 구현된 구체적인 실체를 말한다.
즉, 객체를 프로그램을 돌려 실체화하면 그것을 인스턴스라고 부른다.

컴퓨터 리소스적인 측면에서 둘의 차이를 보자면 인스턴스는 메모리에 할당된다.
객체가 메모리에 할당되어 실제로 사용되면 이를 인스턴스라고 하며 개념적으로 인스턴스를 객체에 포함할 수 있다.

❗️ 객체지향프로그램(object oriented programming)은 객체를 중심으로 프로그래밍하는 방법이다.

파이썬에서는 모든 것을 객체로 만든다. 객체는 클래스에 의해 만들어지므로 객체를 만들 수 있는 클래스가 파이썬에 존재한다.

class와 attribute, Method

class를 설계한다고 하면 여러 가지 속성들을 설정해야한다.
이렇게 설정된 속성들은 클래스의 특징이자 데이터이며 이것을 attribute(속성)이라고 부른다.

이러한 속성들을 통해 클래스가 말하는 객체는 어떠한 기능을 하게 된다.
이렇게 객체가 할 수 있는 기능을 메소드(method)라고 한다.

클래스는 속성과 메소드의 집합이라고도 볼 수 있는 것이다.
이렇게 속성과 메소드를 하나로 묶어서 처리하는 것을 객체지향용어로 캡슐화(encapulation)이라고 한다.

파이썬에서는 모든 것이 객체이다. 파이썬에서는 객체를 처리하기 위해 속성과 메소드를 제공하며 사용자가 직접 속성과 메소드를 만들수도 있다. 객체는 각각의 타입이 존재하며 객체의 타입은 클래스를 의미한다. 즉, 객체의 타입이 같다고 하면 같은 속성과 기능을 가진다는 것을 의미한다. (약간 말장난 같다. 굳이 객체 타입과 클래스라는 용어를 쓰는 걸까?)

참고 블로그 1
참고 블로그 2, 예제가 직관적이다.

profile
💛 공부 블로그 💛

0개의 댓글