티스토리 뷰
클래스에는 __init__() 메소드가 있습니다. 이를 생성자(Constructor) 라고 부르는데요, 사용자가 따로 호출하지 않아도 클래스 객체를 생성할 때 자동으로 호출이 되는 부분입니다. 객체를 생성할 때는 이 생성자의 전달값에 해당하는 갯수만큼 값을 던져줘야 합니다. 단, self 부분은 제외하고 말이죠.
앞 장에서 만든 코드를 다시 가져와보겠습니다.
__init__() 생성자 부분을 보면 self 를 제외하고 name, hp, damage 를 전달받고 있으며 아래에서 유닛을 생성할 때는 각각 3개씩 값을 던져주고 있습니다.
class Unit:
def __init__(self, name, hp, damage): # 3개의 전달값
self.name = name
self.hp = hp
self.damage = damage
print("{0} 유닛이 생성되었습니다.".format(self.name))
print("체력 {0}, 공격력 {1}".format(self.hp, self.damage))
marine1 = Unit("마린", 40, 5)
marine2 = Unit("마린", 40, 5)
tank = Unit("탱크", 150, 35)
만약 전달값을 3개가 아닌 1개 또는 2개만 넘기면 어떻게 될까요?
marine3 = Unit("마린") # 전달값 3개 중 1개만 넘김
새로운 마린을 만드려고 시도할 떄 전달값을 1개만 넘기니, 다음과 같은 에러메시지가 뜨면서 hp 와 damage 에 해당하는 2개 전달값이 없다고 하네요.
TypeError: __init__() missing 2 required positional arguments: 'hp' and 'damage' |
이번에는 전달값을 2개만 넘겨보겠습니다.
marine3 = Unit("마린", 40) # 전달값 3개 중 2개만 넘김
역시나 동일한 형태의 에러메시지가 뜨면서 damage 에 해당하는 1개 전달값이 없다고 합니다.
TypeError: __init__() missing 1 required positional argument: 'damage' |
이와 같이 클래스 객체를 생성할 때는 __init__() 생성자에 정의된 self 를 제외한 갯수만큼 전달값을 넘겨주어야 합니다.
'파이썬 강의 > 기본편' 카테고리의 다른 글
[파이썬 기본편] 9-4.메소드 (1) | 2021.03.09 |
---|---|
[파이썬 기본편] 9-3.멤버변수 (2) | 2021.03.08 |
[파이썬 기본편] 9-1.클래스 (4) | 2021.03.06 |
[파이썬 기본편] 8-6.퀴즈 #7 (10) | 2021.03.05 |
[파이썬 기본편] 8-5.with (4) | 2021.03.04 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 아나콘다
- Unity
- 파이게임
- 환경설정
- Mac
- 나도코딩
- vscode
- onlineclass
- Tkinter
- 챗GPT
- Colab
- GUI
- Coding
- 코랩
- 비주얼 스튜디오 코드
- 주피터노트북
- Visual Studio Code
- repl.it
- pycharm
- 행맨
- c언어
- 파이썬
- ChatGPT
- game
- coloso
- Xcode
- pygame
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함