__init__이랑 self는 무슨 역할을 하나요?

저는 주로 C언어를 쓰고 있고, 그게 버릇이 들어 그런지 가끔 파이썬이 이해가 안 됩니다.

밑의 함수에서 self__init__은 뭘 하는 건가요? 꼭 적어줘야 하는 이유라도 있습니까? oop 때문에 그런 것 같긴 한데 정확한 이유를 알고 계시다면 알려주세요

소스코드

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

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    다음의 코드로 설명해 드리겠습니다

    class A(object):
        def __init__(self):
            self.x = 'Hello'
    
        def method_a(self, foo):
            print self.x + ' ' + foo
    
    a = A()
    

    1. self

    self는 객체의 인스턴스 그 자체를 의미합니다. 대부분 객체지향 언어는 이걸 메소드에 안 보이게 전달하지만 파이썬에서 클래스의 메소드를 정의할 때는 self를 꼭 명시해하고 그 메소드를 불러올 때 self는 자동으로 전달됩니다.

    2. __init__

    __init__은 파이썬에서 쓰이는 생성자입니다.

    위의 코드에서 A()는 생성자 __init__에 어떤 파라미터도 넘기지 않고, 그 결과로 A타입의 객체를 생성해 이를 반환받습니다.

    A(24, 'Hello'))와 같이 쓰면 파라미터 2개를 받는 생성자가 필요한데 현재 __init__은 그 어떤 파라미터도 받지 않으니 exception이 발생합니다.

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.