프로그래밍 언어/파이썬

클래스와 인스턴스

dongok218 2024. 9. 11. 19:54

class 클래스 이름:

클래스 내용

 

class Monster:

def __init__(self, name, attack, defence):

self.name = name

self.attack = attack

self.defence = defence

self.hp = 20

print(f"{name}이 생성되었습니다.")

 

def decrease_hp(self, hp):

self.hp = self.hp - hp

print(f"{self.name}의 체력이 {hp}만큼 감소했습니다.")

print(f"{self.name}의 남은 체력:{self.hp}")

 

def show_info(self):

print(f"몬스터 이름 : {self.name}")

print(f"공격력 : {self.attack}")

print(f"방어력 : {self.defence}")

print(f"체력 : {self.hp}")

 

def __del__(self):

print(f"{self.name} 객체가 삭제되었습니다.")

 

 

if __name__ == "__main__":

화끈몬1 = Monster("화끈몬1", 4, 2)

화끈몬2 = Monster("화끈몬2", 3, 3)

화끈몬1.decrease_hp(2)

화끈몬1.show_info()

화끈몬2.show_info()

 

Monster라는 클래스를 선언하는 코드이다.

__init__함수의 형태를 보면 양쪽으로 '_'기호가 붙어있다. 이 언더스코어는 클래스 안에서 특수한 기능을 처리한다.'__init__'특수 메소드는 클래스의 인스턴스가 생성될 때 실행하는 메서드이다.

 

화끈몬1=Monster("화끈몬1", 4, 2)와 같이 클래스의 인스턴스를 초기화 할 떄 자동으로 실행된다. self는 생성하는 인스턴스 객체를 가리키며 self.변수 형태로 인스턴스에 변수를 할당할 수 있다. 몬스터의 이름, 공격력, 방어력은 인스턴스를 생성할 떄 받아오며 hp는 20으로 고정해 초기화 했다.

 

self는 인스턴스 객체를 나타내는 식별자이므로 다른 변수명을 사용할 수도 있다. 하지만 파이썬에서는 관습적으로 self를 사용한다. 또한 인자값 중 맨 앞에 선언되어야 한다.

 

마지막 __del__함수는 인스턴스가 종료될 시점(메모리 할당에서 해제)에 호출된다. 여기서는 코드가 종료되기 직전에 호출된다.