반응형
생성자는 객체 생성 시 자동으로 호출되고,
소멸자는 객체 소멸 시 자동으로 호출됩니다.
생성자
생성자는 __init__(self)
이것도 메서드이니까 첫번 째 인자는 self로 둡니다.
생성자에서는 보통 해당 클래스가 다루는 데이터를 정의합니다.
사각형 class를 적어보겠습니다.
class Quadrangle:
width = 0
height = 0
color = "black"
square = Quadrangle() # 객체 생성
클래스의 attribute 초기화
클래스의 attribute(width, height, color)를 정의하려면 어떻게 해야할까요?
class Quadrangle:
self.width = 0
self.height = 0
self.color = "black"
# Error. 클래스 자체에서 attribute를 정의할 수 없습니다.
# 생성자에서 해당 클래스가 다루는 데이터를 정의할 수 있습니다.
class Quadrangle:
def __init__(self, width, height, color):
self.width = width # 매개변수로 들어온 인자를 self.* 에 저장
self.height = height
self.color = color
square = Quadrangle(5,5, "black")
소멸자
소멸자는 __del__(self)
이것도 메서드이니까 첫번 째 인자는 self로 둡니다.
클래스 소멸 시 호출됩니다.
class Quadrangle:
def __init__(self, width, height, color):
self.width = width # 매개변수로 들어온 인자를 self.* 에 저장
self.height = height
self.color = color
print("Quadrangle Object is live")
def __del__(self):
print("Quadrangle Object is deleted")
square = Quadrangle(5,5, "black") # "Quadrangle Object is live" 출력
del square # "Quadrangle Object is deleted" 출력
문제
Q. 정삼각형 클래스를 만들고, 너비 출력하기
- attribute : 정삼각형 한 변의 길이
- method : 정삼각형 너비를 리턴하는 메서드
import math
class Quadrangle:
def __init__(self, length):
self.length = length
def get_area(self):
return (math.sqrt(3)/2)* self.length**2
def __del__(self):
print('Quadrangle object is deleted')
square = Quadrangle(10) # 인자를 넣어줘야 매개변수가 있는 생성자가 호출되어 attribute가 정의될 수 있습니다.
square.get_area()
기억해야할 부분
- 처음에 class의 객체를 생성하면서 인자를 주면 생성자를 호출하면서 attribute가 초기화된다.
- 'self' 는 첫번째 인자로 적어준다.
반응형
'Algorithm & Data Structure > 개념' 카테고리의 다른 글
[Concept] 더블 링크드 리스트 (double linked list) (0) | 2021.08.04 |
---|---|
[Concept] 재귀함수와 연결리스트(linked list) (0) | 2021.08.02 |
[Concept] 배열 - 큐와 스택 (0) | 2021.07.31 |
[Concept] 자료구조와 알고리즘 (0) | 2021.07.31 |
코딩 테스트 개요와 파이썬 문법 기초1 (자료형) (0) | 2020.12.28 |