Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

hyeye archive

[Python] 클래스(class)와 객체(object), 인스턴스(instance), 생성자(constructor), 메소드(method) 의미 본문

Programming/Python

[Python] 클래스(class)와 객체(object), 인스턴스(instance), 생성자(constructor), 메소드(method) 의미

hyeye_ 2023. 6. 8. 22:50

객체 지향 프로그래밍 (OOP, Object-Oriented Programming)

객체 지향 프로그래밍은 컴퓨터 프로그래밍 방법 중 하나로 프로그램 구현에 필요한 객체를 파악하고 각각의 객체들의 역할이 무엇인지를 정의하여 객체들 간의 상호작용을 통해 프로그램을 만드는 것을 일컫는다.

 

즉, 프로그래밍에서 필요한 데이터를 추상화시켜 어떠한 객체로 만들고 그 객체들 간의 상호작용을 통해서 프로그램 로직을 구성하는 것이다. 구조를 설계하면 재사용성을 고려하여 코드의 반복을 최소화할 수 있다. 

 

 

클래스 (class)

파이썬의 클래스는 데이터와 기능을 하나의 모듈로 묶어주는 방법을 제공한다. 클래스는 변수와 메서드의 집합으로써 새로운 타입의 객체를 만드는데 사용된다. 쉽게 말하자면 클래스는 객체를 만드는 '틀' 혹은 '설계도' 와 같은 역할을 한다. 

 

클래스를 '틀'로 사용해서 인스턴스(instance)가 만들어질 때, 메모리에 할당되어서 객체(object)가 실체화된다. 

 

 

객체 (object) 와 인스턴스 (instance)

객체 이름 = 클래스 이름 () 의 형태로 객체를 정의한다. 클래스로 만들어진 객체를 인스턴스라고 한다. 인스턴스라는 표현은 특정 객체가 어떤 클래스의 객체인지 관계를 중점으로 표현할 때 사용된다. 

 

클래스를 이루는 속성(attribute)들은 객체 안의 변수에 저장되며 객체는 변수와 메소드로 구성되어 있다.

 

 

메소드 (method) 와 생성자 (constructor)

메소드(method)는 클래스 내에 구현된 함수를 일컫는 말이다. 메소드의 첫 번째 매개변수 이름은 관례적으로 클래스 인스턴스 자신을 일컫는 self라는 변수를 사용한다. 

 

메소드 이름이 __init__인 경우 이 메소드를 생성자(constructor) 라고 한다. 생성자는 객체가 만들어지면 자동으로 호출되어 객체를 초기화하는 역할을 한다. 즉, 객체에 초기값을 설정해야 할 필요가 있는 경우 생성자로 구현하여 초기화를 진행해주면 된다.

 

예시

class Person:

  def __init__(self, age, gender):
    self.age = age
    self.gender = gender

  def say_hello(self):
    print('Hello')

 

1. 클래스 정의 : 

  • class Person :  Person 이라는 이름을 가진 클래스를 정의한다. 클래스 이름은 대문자로 시작하는 것이 관례적이다

2. 생성자 ('__init__' 메소드) : 

  • def __init__(self, age, gender) : __init__ 메서드는 클래스의 인스턴스를 초기화하는 역할을 한다. self는 생성된 객체 자체를 가리키는 매개변수이다.
  • agegender는 생성자에 전달되는 매개변수이다. 객체를 생성할 때 인자로 전달된 값으로 객체의 속성(attribute)을 초기화한다.
  • self.age = ageself.gender = gender는 객체의 agegender 속성을 초기화하는 코드이다.

3. 메소드 정의 :

  • def say_hello(self) :  say_hello라는 이름을 가진 메소드를 정의한다. 이 메서드는 객체가 가지는 동작을 나타낸다.

 

person1 = Person(25, 'Male')
person1.say_hello()  # 출력: Hello

person2 = Person(30, 'Female')
person2.say_hello()  # 출력: Hello

클래스 정의 후에는 해당 클래스를 기반으로 객체를 생성하여 사용할 수 있다. 위 코드는 'Person' 클래스로 'person1'과 'person2'라는 두 개의 객체를 생성하고 'say_hello()' 메소드를 호출하여 'Hello' 라는 문자열을 출력한다.

 

또한, 새로 만들어진 객체 person1.age와 person1.gender에는 각각 25, 'Male' 이라는 값을 가지게 된다.