스타크래프트 프로젝트
74
2 asked
# 공중 공격 유닛 클래스
class FlyableAttackUnit(AttackUnit, Flyable):
def __init__(self, name, hp, damage, flying_speed):
AttackUnit.__init__(self, name, hp, 0, damage) # 지상스피드 0
Flyable.__init__(self, flying_speed)
def move(self, location) :
print("[공중 유닛 이동]")
self.fly(self.name, location)
# 레이스
class Wraith(FlyableAttackUnit):
def __init__(self):
FlyableAttackUnit.__init__("레이스", 80, 20, 5)
self.clocked = False # 클로킹 모드 (해제 상태)
def clocking(self):
if self.clocked == True: # 클로킹 모드 -> 모드 해제
print("{0} : 클로킹 모드 해제합니다.".format(self.name))
self.clocked = False
else : # 클로킹 모드 해제 -> 모드 설정
print("{0} : 클로킹 모드 설정합니다.".format(self.name))
self.clocked = True이렇게 따라서 작성하였는데, 실행하면
Traceback (most recent call last):
File "c:\Users\beatl\OneDrive\바탕 화면\파이썬 인강\Starcraft.py", line 114, in <module>
w1 = Wraith()
File "c:\Users\beatl\OneDrive\바탕 화면\파이썬 인강\Starcraft.py", line 83, in init
FlyableAttackUnit.__init__("레이스", 80, 20, 5)
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
이렇게 오류가 납니다.
어디에서 잘못되었을까요?
Answer 1
0
안녕하세요, 인프런 AI 인턴입니다.
Wraith 클래스의 __init__ 메소드에서 FlyableAttackUnit.__init__()를 호출할 때, self 매개변수가 누락된 것이 문제입니다. 모든 클래스 메소드에서 첫 번째 매개변수는 self여야 합니다. 따라서 다음과 같이 수정해 주셔야 합니다:
# 레이스
class Wraith(FlyableAttackUnit):
def __init__(self):
FlyableAttackUnit.__init__(self, "레이스", 80, 20, 5) # self 추가
self.clocked = False # 클로킹 모드 (해제 상태)
def clocking(self):
if self.clocked == True: # 클로킹 모드 -> 모드 해제
print("{0} : 클로킹 모드 해제합니다.".format(self.name))
self.clocked = False
else: # 클로킹 모드 해제 -> 모드 설정
print("{0} : 클로킹 모드 설정합니다.".format(self.name))
self.clocked = True
이제 self를 __init__ 호출에 추가하여 오류를 해결할 수 있습니다. self는 현재 인스턴스를 가리키며, 인스턴스 메소드를 호출할 때 항상 첫 번째 매개변수로 전달해야 합니다.
질문 중에 아래와 같은 피드백을 받은 적이 있는 유사한 경우를 참조하실 수 있습니다.
- 생성자가 제대로 작동하지 않습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
quiz 8 오류 문제
0
70
1
str() 작성 위치
0
51
1
아나콘다
0
60
1
윈도우 설치 도와주세요
0
74
1
std_weight함수에서weight만return가능한가요?
0
68
1
오른쪽위 실행버튼을 누르면 터미널에 에러가 뜨고 컨트롤+F5를 누르면 에러가 안뜹니다.
0
34
1
설치해서 시작하는데 문제가 있습니다.
0
69
1
함수 입력할 때 설명 툴팁 나오게 하려면 어떻게 하나요?
0
104
1
2장 환경설정 문의
0
74
1
python 파일명.py 입력시 Python 출력
0
133
1
로드맵 질문있습니다!
0
85
2
오류
0
74
1
질문 있습니다.
0
75
1
블로그에 학습한 내용을 정리해도 괜찮을까요?
0
172
1
#퀴즈 3의 5번 질문
0
72
1
print("ㅋ"*5) 에 대한 결과가 도출되지 않습니다
0
81
1
가변인자의 위치가 중요한가요?
0
79
1
vscode옛날 버전 설치
0
221
1
글자색상이 선생님처럼 안나옵니다
0
186
1
슬프네
0
156
1
quiz 6번 관련 문의입니다.
0
129
1
퀴즈#3에 대해서 이렇게 작성해도 되나요?
0
194
1
피드백 부탁드립니다
0
93
1
print 출력값 관련 궁금한점 있습니다.
0
96
0

