Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 객체(Object)란? 예제로 쉽게 이해하기


파이썬(Python)은 대표적인 객체 지향 프로그래밍(Object-Oriented Programming) 언어입니다. 파이썬에서는 거의 모든 것을 객체(Object)로 다루며, 각 객체는 고유한 속성(Attribute)과 동작(Method)을 가집니다.

클래스(Class)는 객체를 만들기 위한 설계도이자, 객체를 생성하는 일종의 생성자(Constructor) 역할을 합니다.

하나의 클래스로부터 여러 개의 객체를 생성할 수 있으며, 서로 다른 객체는 같은 속성이라도 서로 다른 값을 가질 수 있습니다.

객체의 속성과 동작 예시

자동차를 하나의 객체로 생각해 봅시다. 자동차의 속성에는 색상, 제조사, 연식(제조 연도), 가격, 연비 등이 포함됩니다. 반면 자동차의 동작은 그 차가 수행할 수 있는 기능을 의미하며, 속도 올리기, 속도 줄이기, 브레이크 밟기 등이 여기에 해당합니다.

객체 지향의 핵심은 현실 세계의 사물을 프로그래밍으로 옮기는 데 있습니다. 우리 주변의 모든 사물은 저마다 고유한 속성과 기능을 지니고 있으며, 이를 코드로 표현한 것이 바로 객체입니다.

클래스와 객체의 관계 예시

같은 클래스에 속한 객체들이라도 속성 값은 서로 다를 수 있습니다. 예를 들어 '사람(Person)'을 하나의 클래스로 본다면, 이 클래스는 이름, 나이, 성별 같은 속성을 가집니다. 그리고 실제 존재하는 모든 개인은 '사람' 클래스의 객체(인스턴스)가 될 수 있습니다. 각 개인마다 이름, 나이, 성별이 다르듯이, 객체마다 클래스에 정의된 속성에 서로 다른 값을 저장할 수 있는 것입니다.

인스턴스화(Instantiation)란?

객체는 클래스의 인스턴스(instance)라고도 부릅니다. 따라서 클래스로부터 객체를 생성하는 과정을 인스턴스화(instantiation)라고 합니다.

파이썬에서 클래스 정의하기

파이썬에서 함수를 정의할 때 'def' 키워드를 사용하듯이, 클래스를 정의할 때는 'class' 키워드를 사용합니다. 클래스는 객체의 설계도이므로, 공통으로 사용할 속성과 메서드를 모두 클래스 안에 선언하고 정의합니다. 이렇게 생성된 객체들은 해당 속성과 함수에 접근할 수 있으며, 각 객체는 클래스 내부에 정의된 속성에 대해 자신만의 고유한 값을 가질 수 있습니다.

파이썬에서 객체 생성하기

클래스의 객체를 생성하는 방법은 매우 간단합니다. 클래스 이름을 알고 있다면 아래와 같이 작성하면 됩니다.

Object_name = class_name()

예제

class Person:
    name=""
    age=0
    city=""
    def display(self):
        print("Name : ",self.name)
        print("Age : ",self.age)
        print("City : ",self.city)

p1=Person()
p1.name="Rahul"
p1.age=20
p1.city="Kolkata"
p1.display()

print()

p2=Person()
p2.name="Karan"
p2.age=22
p2.city="Bangalore"
p2.display()

print()
p1.display()

위 코드에서 p1=Person()이 바로 객체 인스턴스화 과정이며, p1은 객체의 이름입니다. 객체 p1을 통해 클래스의 속성에 접근해 각각 다른 값을 할당한 뒤, display() 메서드를 호출해 해당 객체의 값을 출력했습니다. 이후 두 번째 객체 p2에 대해서도 같은 방식으로 값을 설정하고 출력합니다.

마지막에 다시 p1의 display()를 호출하는 이유는, 각 객체가 자신만의 속성 값을 독립적으로 유지한다는 것을 보여주기 위함입니다. p2의 값을 변경했음에도 p1의 값은 전혀 영향을 받지 않는다는 점을 실행 결과에서 확인할 수 있습니다.

실행 결과

Name : Rahul
Age : 20
City : Kolkata
Name : Karan
Age : 22
City : Bangalore
Name : Rahul
Age : 20
City : Kolkata