본문 바로가기
Python/Python FAQ

Python 파이썬에서 __init__과 self는 무엇을 하는가요? [중복], What do __init__ and self do in Python? [duplicate]

by 베타코드 2023. 6. 6.
반응형

질문


저는 Python 프로그래밍 언어를 배우고 있고, 이해하지 못한 부분이 있어서 질문드립니다.

다음과 같은 메소드에서:

def method(self, blah):
    def __init__(?):
        ....
    ....

self는 무엇을 하는 것인가요? 어떤 의미를 가지고 있나요? 필수적인가요?

__init__ 메소드는 무엇을 하는 건가요? 왜 필요한가요? (등등)

이것들이 OOP 구조일 것 같은데, 저는 많이 모르고 있습니다.


답변


이 코드에서:

class A(object):
    def __init__(self):
        self.x = 'Hello'

    def method_a(self, foo):
        print self.x + ' ' + foo

... self 변수는 객체 자체의 인스턴스를 나타냅니다. 대부분의 객체 지향 언어는 객체에 정의된 메소드에 대해 숨겨진 매개변수로 전달하지만, Python은 그렇지 않습니다. 명시적으로 선언해야 합니다. A 클래스의 인스턴스를 생성하고 해당 메소드를 호출할 때, 자동으로 전달됩니다. 예를 들어...

a = A()               # __init__ 메소드에 아무 인수도 전달하지 않습니다
a.method_a('Sailor!') # 하나의 인수만 전달합니다

__init__ 메소드는 Python에서 생성자를 대략적으로 나타냅니다. A()를 호출하면 Python이 객체를 생성하고, 그것을 __init__ 메소드의 첫 번째 매개변수로 전달합니다. 추가 매개변수(A(24, 'Hello')와 같은 경우)도 인수로 전달됩니다. 이 경우, 예외가 발생합니다. 왜냐하면 생성자가 이러한 인수를 예상하지 않기 때문입니다.

반응형

댓글