반응형
질문
저는 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')
와 같은 경우)도 인수로 전달됩니다. 이 경우, 예외가 발생합니다. 왜냐하면 생성자가 이러한 인수를 예상하지 않기 때문입니다.
반응형
댓글