# TIL 웹 개발 - class 이해하기 init, instance, method

팀프로젝트로 class를 사용하게 되었다.
하지만 class가 대략 미리 만들어놓고 나중에 또 쓰기 위한 거다 정도로 이해하고 있어서 이번 포스팅을 통해 이해해보기로 하자.

### `init`

일단, class 코드에 대해 찾아보면 항상 첫번째 함수는 __init__이 나온다.

```javascript
class Person:
    def **init**(self, name, age):
        self.name = name  # 인스턴스 변수 초기화
        self.age = age    # 인스턴스 변수 초기화
    def introduce(self):
        print(f"Hello, I am {self.name} and {self.age} years old.")

# 객체 생성
person1 = Person("Alice", 30)
person2 = Person("Bob", 25)

# 메서드 호출
person1.introduce()  # "Hello, I am Alice and 30 years old." 출력
person2.introduce()  # "Hello, I am Bob and 25 years old." 출력
```

init은 아마 initiail, initiative, initiation 등의 약자로 우선적인 느낌을 가진 함수일 것이다.
class 함수에서 init은 생성자(conductor)로 불리며 객체가 생성될 때, 자동으로 호출되는 특별한 메소드다.

좀 더 쉽게 이해하기 위해 역할에 대해 설명하면,

1. **객체 초기화** : 객체가 생성될 때 필요한 초기 설정이나 값들을 초기화하기 위해 사용된다.

위 코드에서 이름과 나이에 대한 정보를 받는 프로그램을 만든다면 처음 데이터를 생성하는 역할을 한다는 것이다.

2. **유연한 객체 생성** : 매개변수를 받아 객체 생성시 다양한 초기값을 설정할 수 있게 해줍니다.

그냥 새로운 객체를 생성할 때 이걸 사용해 쉽게 한다는 것이다. 위 코드 #객체생성 부분에서 보듯 person1 = class(데이터1, 데이터2) 를 넣어주면 바로 생성할 수 있다.

3. **명확한 코드 구조 **: class 함수의 기준이 되다보니 코드 구조가 한눈에 보기 쉽게 해준다. 추후 유지보수에도 도움이 된다.

### `instance`

인스턴스는 클래스에서 생성된 객체를 말한다. 위 코드에서 보면 person1, person2가 인스턴스에 해당한다.

### `method`

메소드는 클래스나 인스턴스에서 호출할 수 있는 함수를 말한다. 

1. 인스턴스 메소드

특정 인스턴스와 연관된 메소드로 self 매개변수를 통해 접근하고 조작한다.
위 코드에서 보면 def intoruduce(self): 가 인스턴스 메소드이다.

2. 클래스 메소드

클래스 자체에 연관된 메소드로 데코레이터로 사용된다. 데코레이터는 다음 기회에 알아보자.

For the site tree, see the [root Markdown](https://slashpage.com/kyugntae-ai.md).
