[Python] 클래스
2 minute read
[Python] 클래스
Inflearn Study
링크: https://www.inflearn.com/
- 인프런에서 “파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자” 강의를 들으며 혼자 공부한 내용입니다.
클래스
# 클래스를 사용 안하는 경우
name = "마린" # 유닛의 이름
hp = 40 # 유닛의 체력
demage = 5 # 유닛의 공격력
print("{}유닛이 생성되었습니다.".format(name))
print("체력 {0}, 공격력 {1}\n".format(hp, demage))
# 탱크 : 공격 유닛, 탱크. 포를 쏠 수 있음. 일반 / 시즈 모드
tank_name = "탱크"
tank_hp = 150
tank_demage = 35
print("{}유닛이 생성되었습니다.".format(tank_name))
print("체력 {0}, 공격력 {1}\n".format(tank_hp, tank_demage))
def attack(name, location, demage):
print("{0} : {1} 방향으로 적군을 공격합니다. [공격력 {2}]".format(\
name, location, demage))
attack(name, "1시", demage)
attack(tank_name, "1시", tank_demage)
- 클래스를 사용 안하는 경우 같은 내용이여도 전부 새로 지정해줘야 합니다.
# 클래스를 사용하는 경우
class Unit:
def __init__(self, name, hp, damage): # 생성자
self.name = name # 멤버 변수(클래스 내 생성된 변수)
self.hp = hp
self.damage = damage
print("{}유닛이 생성되었습니다.".format(self.name))
print("체력 {0}, 공격력 {1}".format(self.hp, self.damage))
marine1 = Unit("마린", 40, 5) # unit 클래스의 인스턴스
marine2 = Unit("마린", 40, 5)
tank = Unit("탱크", 150, 35)
- 객체: 메소드와 변수의 묶음입니다.
- 클래스: 하나 이상의 유사한 객체들을 묶어 공통된 특성을 표현한 데이터 추상화입니다.
- 인스턴스: 클래스로부터 만들어진 것입니다.
init
def __init__(self, name, hp, damage): # 생성자
self.name = name # 멤버 변수(클래스 내 생성된 변수)
self.hp = hp
self.damage = damage
print("{}유닛이 생성되었습니다.".format(self.name))
print("체력 {0}, 공격력 {1}".format(self.hp, self.damage))
- init : 초기화 메소드로 정의된 생성자 함수
멤버 변수
self.name = name # 멤버 변수(클래스 내 생성된 변수)
self.hp = hp
self.damage = damage
# 레이스 : 공중 유닛, 비행기, 클로킹(상대방에게 보이지 않음)
wraith1 = Unit("레이스", 80, 5)
print("유닛 이름: {0}, 공격력 {1}".format(wraith1.name, wraith1.damage))
메소드
class AttackUnit: # 공격 유닛
def __init__(self, name, hp, damage): # 생성자
self.name = name # 멤버 변수(클래스 내 생성된 변수)
self.hp = hp
self.damage = damage
def attack(self, location): # self는 따로 보내줄 필요 없음
print("{0} : {1} 방향으로 적군을 공격합니다. [공격력: {2}]"\
.format(self.name, location, self.damage))
def damaged(self, damage):
print("{0} : {1} 데미지를 입었습니다.".format(self.name, damage))
self.hp -= damage
print("{0} : 현재 체력은 {1} 입니다.".format(self.name, self.hp))
if self.hp <= 0:
print("{0} : 파괴되었습니다".format(self.name))
- 메소드 : 클래스에 묶여서 클래스의 인스턴스와 관계되는 일을 하는 함수
- self
- 메소드의 첫번째 인자
- 인스턴스의 매개변수를 전달 할 때에는 self 매개변수는 생략하고 전달합니다.
# 메딕 : 의무병
# 파이어뱃 : 공격 유닛, 화염 방사기.
firebat1 = AttackUnit("파이어뱃", 50, 16)
firebat1.attack("5시")
# 공격을 2번 받는다고 가정
firebat1.damaged(25)
firebat1.damaged(25)
메소드
class AttackUnit: # 공격 유닛
def __init__(self, name, hp, damage): # 생성자
self.name = name # 멤버 변수(클래스 내 생성된 변수)
self.hp = hp
self.damage = damage
def attack(self, location): # self는 따로 보내줄 필요 없음
print("{0} : {1} 방향으로 적군을 공격합니다. [공격력: {2}]"\
.format(self.name, location, self.damage))
def damaged(self, damage):
print("{0} : {1} 데미지를 입었습니다.".format(self.name, damage))
self.hp -= damage
print("{0} : 현재 체력은 {1} 입니다.".format(self.name, self.hp))
if self.hp <= 0:
print("{0} : 파괴되었습니다".format(self.name))
- 메소드 : 클래스에 묶여서 클래스의 인스턴스와 관계되는 일을 하는 함수
- self
- 메소드의 첫번째 인자
- 인스턴스의 매개변수를 전달 할 때에는 self 매개변수는 생략하고 전달합니다.
# 메딕 : 의무병
# 파이어뱃 : 공격 유닛, 화염 방사기.
firebat1 = AttackUnit("파이어뱃", 50, 16)
firebat1.attack("5시")
# 공격을 2번 받는다고 가정
firebat1.damaged(25)
firebat1.damaged(25)
Leave a comment