20230102 TIL | 파이썬 초기화 메서드, 소멸자 메서드

Choog Yul Lee·2023년 1월 2일
0

2023_TIL

목록 보기
1/6
post-thumbnail

📆 Date

  • 1st January 2023

🔑 Problem

  • python으로 LinkedList 를 자료구조를 구현해보라고?

note

python 으로 클래스를 만드는 법은 확인했다. 그럼 어떻게 객체를 초기화하고, 어떻게 삭제하는 거지? Check! Check!


🛰️ Reference Site

🎽 Learn

1. 생성자 : __init__(self)

  • 객체가 생성될 때 자동으로 호출된다.
  • Method 이므로 첫 번째 Argument는 반드시 self 이다.
class Person:
	def __init__(self, name, age):
    	self.name = name
        self.age = age

tom = Person('Tom', 20)

selfclass 가 아닌 object 를 나타낸다.

2. 소멸자 : __del__(self)

  • 객체가 소멸할 때 자동으로 호출된다.
  • Method 이므로 첫 번째 Argument는 반드시 self 이다.
class Person:
	def __init__(self, name, age):
    	self.name = name
        self.age = age
    
	def __del__(self):
        print('bye! bye! ' + self.name)

tom = Person('Tom', 20)
del tom

Output

Bye! Bye! Tom

💎 Thinking

생성자 함수와 초기화 함수에 대해

ptyhon 에서는 생성자 함수와 초기화 함수가 분리되어 있다고 한다.

  • __init__ 은 초기화 함수
  • __new__ 는 생성자 함수

별거 없지 않나, 그냥 메모리를 할당하는 부분과 변수를 초기화 하는 부분이 다른 언어와 다르게 분리되어 있다는 것! 근데 문법을 보면 이해가 간다.

### 파이썬에서 객체 생성하기
tom = Person('Tom', 20)
// JAVA에서 객체 생성하기
Person tom = new Person("Tom", 20);

JAVA 에서 보는 뚜렷한 new 키워드!
JAVA 문법을 풀어보면

  • new 메모리를 할당하라!
  • Person("Tom", 20) 변수를 초기화 하라!
    위와 같이 되지 않을까?

0개의 댓글