self란 무엇인가?
파이썬에서 'self'는 클래스의 인스턴스(instance), 즉 객체 자기 자신을 나타내는 키워드입니다. "self"를 사용하면 클래스 내부에서 해당 객체의 속성(attribute)과 메서드(method)에 접근할 수 있습니다.
__init__ 메서드란 무엇인가?
"__init__"은 파이썬 클래스에 미리 정의되어 있는 예약 메서드(reserved method)입니다. 객체 지향 프로그래밍 용어로는 생성자(constructor)라고 부릅니다.
이 메서드는 클래스로부터 새로운 객체가 생성되는 순간 자동으로 호출되며, 객체의 초기 상태를 설정하기 위해 클래스의 속성들을 초기화하는 역할을 담당합니다.
예제
가로(breadth = 120), 세로(length = 160)인 직사각형 밭의 총 비용을 계산해 보겠습니다. 1제곱 단위당 비용은 2000루피입니다.
class Rectangle:
def __init__(self, length, breadth, unit_cost=0):
self.length = length
self.breadth = breadth
self.unit_cost = unit_cost
def get_area(self):
return self.length * self.breadth
def calculate_cost(self):
area = self.get_area()
return area * self.unit_cost
# breadth = 120 units, length = 160 units, 1 sq unit cost = Rs 2000
r = Rectangle(160, 120, 2000)
print("Area of Rectangle: %s sq units" % (r.get_area()))
print("Cost of rectangular field: Rs.%s" % (r.calculate_cost()))
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Area of Rectangle: 19200 sq units
Cost of rectangular field: Rs.38400000
코드 설명
위 예제에서 __init__ 메서드는 Rectangle 객체가 생성될 때 자동으로 호출되며, 전달받은 값들을 self.length, self.breadth, self.unit_cost라는 인스턴스 변수에 저장합니다. 이후 get_area()와 calculate_cost() 메서드는 self를 통해 이 변수들에 접근하여 면적과 총비용을 계산합니다.
정리
- self: 클래스의 인스턴스(객체 자신)를 가리키며, 객체의 속성과 메서드에 접근할 때 사용됩니다.
- __init__: 객체가 생성될 때 자동으로 호출되는 생성자 역할의 특수 메서드로, 객체의 속성을 초기화합니다.