뭉지(moonz)
작은 발자국들의 위대한 여정
뭉지(moonz)
  • All (202)
    • Test Code (4)
    • 백엔드 개발하며 작성한 (27)
      • Spring (17)
      • 데이터베이스 (7)
      • 기억할 내용 (3)
    • 언어 (53)
      • Java (25)
      • node.js (7)
      • Python (21)
    • 클라우드 (6)
    • Algorithm & Data Structure (51)
      • 개념 (15)
      • 문제 풀이 (36)
    • 유용한 모든 것 (16)
    • monologue (7)
      • 업무 노트 (1)
      • 관리 로그 (0)
      • 내 이야기 공책 (6)
    • Project (2)
    • TroubleShooting (8)
    • 지식 (18)
      • Machine Learning (6)
      • Review (7)
      • Web (5)
    • Computer Science (5)

블로그 메뉴

  • 홈
  • 태그

인기 글

최근 글

최근 댓글

전체 방문자
오늘
어제

티스토리

hELLO · Designed By 정상우.
뭉지(moonz)

작은 발자국들의 위대한 여정

Algorithm & Data Structure/개념

[Concept] 생성자와 소멸자

2021. 8. 1. 12:37
반응형

생성자는 객체 생성 시 자동으로 호출되고,

소멸자는 객체 소멸 시 자동으로 호출됩니다.

 

생성자

생성자는 __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
    'Algorithm & Data Structure/개념' 카테고리의 다른 글
    • [Concept] 더블 링크드 리스트 (double linked list)
    • [Concept] 재귀함수와 연결리스트(linked list)
    • [Concept] 배열 - 큐와 스택
    • [Concept] 자료구조와 알고리즘
    뭉지(moonz)
    뭉지(moonz)
    제가 깨달은 것을 정리하는 공간입니다. 🧡

    티스토리툴바