programmer-blog

[Python]__init__과 self란 무엇인가 본문

Python

[Python]__init__과 self란 무엇인가

frogrammer 2020. 5. 21. 23:07

클래스 안에는 크게 두가지가 있는데 속성과 메서드다. 메서드는 무언가 기능을 하는 함수를 말하고 속성은 데이터를 말한다.
Person이라는 클래스가 있을 때 이름,나이,직업 등의 정보가 속성이고 자기소개와 같은 기능이 메서드다.
그리고 __init__은 클래스의 속성을 생성한다.
인스턴스 초기화, 다시말해 인스턴스를 만든다.
__으로 시작하는 메서드는 파이썬이 자동으로 호출해 주는 함수로 __init__은 클래스 속성 생성자 역할을 한다.

일단 예제 코드를 보자. Person이라는 클래스를 만들고 Steve 인스턴스르 생성했다.

class Person():
    def __init__(self,name,age,job):
        self.name = name
        self.age = age
        self.job = job

Steve = Person('Steve','22','programmer')

self는 자기자신을 의미한다. 즉 인스턴스를 가리킨다.
Person이 self에 들어갈거고 Person 클래스 인스턴스인 Steve를 통해 각 속성에 접근 할 수 있다.

self 대신에 클래스 이름(Person)을 넣어도 상관없다.

마찬가지로 name,age,job이 클래스 인자를 통해 전달되면 인스턴스의 속성이 생성된다.
참고로 self는 파이썬의 예약어는 아니지만 암묵적으로 클래스에서 자기자신을 가리키는 단어로 쓴다.

 

print('이름:',Steve.name)
print('나이:',Steve.age)
print('직업:',Steve.job)

실제로 출력해보면 속성에 대해서 확인해 볼 수 있다.