본문 바로가기
programming/Python

파이썬 클래스 생성자 초기화 함수 init 사용 python class constructor init function

by 개코 - 개발과 코딩 2021. 11. 6.

파이썬 init 함수는 클래스가 생성시 클래스 변수에 초기값을 설정하는 역할을 한다. 생성자라고 하는데 비슷한 것이 자바나 C#의 생성자와 동일한 작업을 한다. 문법적인 차이가 있을 뿐 쓰임새는 같다.

파이썬 클래스 초기화 init 함수 사용
python class init function

모든 OOP 언어의 특징은 클래스를 초기화할 수 있다.

클래스의 특징적인 값들을 클래스를 초기화하면서 설정할 수 있는 것이다.

자바나 C# 같은 경우 이런 작업을 하는 것을 생성자라고 한다.

생성자에 대한 것은 다음으로 미루어 클래스를 초기화하고 객체화 하면서 초기값을 설정할 수 있다라는 점만 이해하자.

파이썬 클래스 초기화 설정

파이썬 변수는 선언 작업은 없지만 초기값을 설정할 수 있다.

파이썬 클래스는 class 라는 키워드를 사용하여 클래스를 선언한다.

그렇다면 파이썬 클래스에 값을 초기화할 때는 어떻게 할까?

init() 함수를 사용하면 된다.

class 를 선언하고 init 함수를 사용하여 클래스에서 사용할 변수들을 초기화 설정할 수 있다.

init 함수 사용방법

파이썬 클래스를 생성할 때 초기화하는 방법은 init 함수를 사용하는 것이다.

init 함수를 선언하고 인자값을 넣고 변수를 선언하면 된다.

함수명만 다를 뿐 자바나 C#과 비슷한 구조를 가지고 있음을 알 수 있다.

class pythonClass : #-{

    def __init__(값1, 값2) : #-{
        self.변수1 = 값1
        self.변수2 = 값2
    #-}

#-}

코드 샘플

실제로 클래스를 선언하고 init 함수를 사용해 보도록 하자.

일반적으로 나이 이름 성별 등이나 자동차를 예로 들지만 다르게 해 보도록 하자.

클래스는 데이터 형태소이다.

클래스를 사용하기 위해서는 객체를 생생한다.

객체 생성시 클래스에서 사용할 변수에 초기값을 설정하려면 init 함수를 사용한다.

print('----------')

#- 클래스부분
class IdolGroup : #-{

    def __init__(self, name, people, member) : #-{
        self.name = name
        self.people = people
        self.member = member
    #-}

#-}

vList = ["지수", "제니", "로제", "리사"]
idol1 = IdolGroup("블랙핑크", 4, vList);

print("클래스 1", type(idol1), idol1)
print("클래스 1", type(idol1.name), idol1.name)
print("클래스 1", type(idol1.people), idol1.people)
print("클래스 1", type(idol1.member), idol1.member)

print('----------')

vList = ["카리나", "윈터", "지젤", "닝닝 "]
idol2 = IdolGroup("에스파", 4, vList);

print("클래스 2", type(idol2), idol2)
print("클래스 2", type(idol2.name), idol2.name)
print("클래스 2", type(idol2.people), idol2.people)
print("클래스 2", type(idol2.member), idol2.member)

print('----------')

데이터 형태소인 클래스는 하나만 존재한다.

클래스를 사용하기 위한 데이터 객체는 2개 만들어 주었다.

init 함수를 사용하여 초기값을 설정해 주었다.

결과화면을 보자.

데이터 형태소인 클래스를 이용해 데이터 구조체를 만들고 생성해 주었다.

이렇게 데이터 구조를 만들어 주면 규칙적이고 유연한 데이터의 가공과 조작이 쉬워진다.

물론, 코딩은 조금 귀찮은 것이 사실이다.

반응형

댓글