강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

ek-1002님의 프로필 이미지
ek-1002

작성한 질문수

파이썬 무료 강의 (기본편) - 6시간 뒤면 나도 개발자

스타크래프트 프로젝트 전반전

스타크래프트 프로젝트

작성

·

41

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)

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

이렇게 오류가 납니다.

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

답변 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는 현재 인스턴스를 가리키며, 인스턴스 메소드를 호출할 때 항상 첫 번째 매개변수로 전달해야 합니다.

질문 중에 아래와 같은 피드백을 받은 적이 있는 유사한 경우를 참조하실 수 있습니다.
- 생성자가 제대로 작동하지 않습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

ek-1002님의 프로필 이미지
ek-1002

작성한 질문수

질문하기