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


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

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

소스코드

def method(self, blah):
    def __init__(?):
        ....
    ....
  • 2016년 01월 19일에 작성됨

조회수 229


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이 발생합니다.

  • 2016년 01월 19일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close