inflearn logo
강의

Course

Instructor

Free Python Tutorial (Basic) - Become a Developer in 6 Hours

StarCraft Project First Half

스타크래프트 프로젝트

74

ek-1002

2 asked

0

 

# 공중 공격 유닛 클래스
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)

~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^

이렇게 오류가 납니다.

어디에서 잘못되었을까요?

python

Answer 1

0

communityai8509

안녕하세요, 인프런 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