__init__이랑 self는 무슨 역할을 하나요?
조회수 28399회
저는 주로 C언어를 쓰고 있고, 그게 버릇이 들어 그런지 가끔 파이썬이 이해가 안 됩니다.
밑의 함수에서 self
와 __init__
은 뭘 하는 건가요?
꼭 적어줘야 하는 이유라도 있습니까?
oop 때문에 그런 것 같긴 한데 정확한 이유를 알고 계시다면 알려주세요
소스코드
def method(self, blah):
def __init__(?):
....
....
1 답변
-
다음의 코드로 설명해 드리겠습니다
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이 발생합니다.
댓글 입력